STM32中的IPR,IRQ,NVCC ,EXTI,AFIO 都是什么意思?
在STM32微控制器中,IPR、IRQ、NVIC(而非NVCC,可能是NVIC的误写)、EXTI、AFIO各自具有特定的含义和功能:
- IPR(Interrupt Priority Registers):
- 含义:中断优先级寄存器。
- 作用:用于设置和存储中断的优先级。每个可屏蔽中断都占用IPR寄存器中的一个或多个位(通常是高4位),这些位被分为抢占优先级和响应优先级(或称为子优先级)。抢占优先级用于决定当多个中断同时发生时,哪个中断应该首先被执行;而响应优先级则用于在抢占优先级相同的情况下,决定中断的执行顺序。
- IRQ(Interrupt Request):
- 含义:中断请求。
- 作用:IRQ是中断请求的唯一标识符,用于区分不同的中断源。在STM32中,IRQn(Interrupt Request Number,中断请求编号)表是一个枚举类型,它列出了STM32微控制器支持的所有中断和异常。IRQ编号本身并不直接决定中断的优先级,而是作为中断向量表中的一个索引,指向相应的中断服务程序(ISR)。
- NVIC(Nested Vector Interrupt Controller):
- 含义:嵌套向量中断控制器。
- 作用:NVIC是ARM Cortex-M内核的一部分,负责管理和配置中断。它提供了中断使能、中断优先级设置、中断挂起和中断解挂等功能。NVIC还支持嵌套中断,即当一个中断正在被处理时,如果有更高优先级的中断发生,则当前中断可以被挂起,转而处理更高优先级的中断。NVIC通过其内部的寄存器组(如ISERx、ICERx、ISPRx、ICPRx、IPRx等)来实现这些功能。
- EXTI(External Interrupt):
- 含义:外部中断事件控制器。
- 作用:EXTI是STM32中的一个外部中断模块,用于监测指定GPIO口的电平信号变化。当检测到指定条件(如上升沿、下降沿、双边沿或软件触发)时,EXTI会向内核的中断控制器NVIC发出中断申请。NVIC在裁决后,如果满足条件,会中断CPU的主程序,使CPU转而执行EXTI对应的中断服务程序。EXTI支持所有的GPIO口,但相同的Pin不能同时触发中断。
- AFIO(Alternate Function IO):
- 含义:复用功能输入输出。
- 作用:AFIO是STM32中的一个功能模块,用于处理管脚复用问题。当MCU的管脚资源有限,而需要同时支持普通IO和多个外设功能(如PWM、TIM、ADC等)时,就会使用管脚复用。通过配置AFIO的相关寄存器,可以实现GPIO引脚的复用功能,以及引脚的重映射功能。在使用非APB2总线的内外设或配置EXTI外部中断时,通常需要开启AFIO的时钟来实现引脚重映射和信号中继功能。
综上所述,IPR、IRQ、NVIC、EXTI、AFIO在STM32微控制器中各自扮演着重要的角色,它们共同协作实现了中断管理、外部事件响应和引脚复用等功能。