常见问答
- M051 系列(95)
- M0518 系列(97)
- M0519 系列(43)
- M0564 系列(1)
- Mini51 系列(90)
- Nano100 / 102 系列(101)
- Nano103 Base 系列(10)
- Nano110 / 112 LCD 系列(100)
- Nano120 USB 系列(111)
- Nano130 USB+LCD 系列(110)
- NUC029 系列(94)
- NUC100 / 200 系列(102)
- NUC120 / 122 / 123 / 220 USB 系列(116)
- NUC121/125 系列(1)
- NUC126 USB 系列(2)
- NUC130 / 230 CAN 系列(103)
- NUC131/NUC1311 CAN 系列(98)
- NUC140 / 240 USB+CAN 系列(114)
- M451 Base 系列(118)
- M451M 系列(117)
- M452 USB 系列(130)
- M4521 USB 系列(1)
- M453 CAN 系列(128)
- M463 CAN FD/USB HS 系列(1)
- M467 Ethernet/Crypto 系列(1)
- M471 系列(1)
- M479 Motor Control Series(1)
- M481 Base 系列(4)
- M482 USB FS OTG 系列(4)
- M483 CAN 系列(4)
- M484 USB HS OTG 系列(4)
- M485 Crypto 系列(4)
- M487 Ethernet 系列(4)
- M4TK 触摸 IC 系列(25)
- NUC442 / 472 系列(130)
- NUC472 Series(1)
- NUC505 系列(138)
产品
功能
+
常见问答
为什么外设中断标志已经被清除,但还是会进入中断服务程序? 日期: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 |