常见问答

常见问答

为什么外设中断标志已经被清除,但还是会进入中断服务程序?  日期:2018-11-26

因为NVIC_ICPR寄存器中,对应的外设中断标志没有被清除。

 在Cortex-M的架构中,中断服务程序执行的先后顺序是透过NVIC控制的,这里问题中有两个标志,一个是外设内部自己的中断标志,另一个是NVIC中用来记录哪个外设发出中断的标志。

外设的中断标志被设定为1的同时,会将NVIC中的NVIC_ICPR寄存器对应的值设为1,若是使用者仅清除外设的中断标志后,NVIC_ICPR寄存器中对应的值并没有被清掉,NVIC还是会依照NVIC_ICPR寄存器的结果进入中断服务程序。

进入中断服务程序的概略流程如下:

(1) 外设中断被触发

(2) 外设的中断标志置位

(3) NVIC中,NVIC_ICPR寄存器对应的标志置位

(4) 由NVIC排程后,进入中断服务程序

 

NVIC_ICPR寄存器清除的方式有二种。

(1) 当进入中断子程序时,由硬件自动清除NVIC_ICPR寄存器

(2) 手动透过软件去清除NVIC_ICPR寄存器

 

产品: 微控制器 ,Arm Cortex-M0 微控制器 ,Arm Cortex-M4 微控制器
应用:
功能: Peripherals,ARM,NVIC