nbh520 发表于 2017-7-6 11:09:14

STM32芯片__disable_irq关闭中断后,调用__WFI()指令,CPU为什么...

本帖最后由 nbh520 于 2017-7-21 10:32 编辑

Cortex M0内核 ,CPU调用__disable_irq函数关闭中断后,进入睡眠模式,并且调用__WFI()函数,等待中断,结果当有外部中断进入时,CPU唤醒。

跪求大神指教这是什么原理,关闭中断后,等待中断,然后中断来了,想不明白http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/35.gif

xmshao 发表于 2017-7-6 14:45:44

本帖最后由 xmshao 于 2017-7-6 14:59 编辑

__disable_irq函数 只是关闭了CPU的中断响应,它相当于中断控制总开关。
此时即使产生了允许的中断请求事件,并做好了相关NVIC配置,cpu也不会去运行相关中断服务程序。

如果此时相关EXTI的中断使能及NVIC控制都是使能的,就不影响WFI的响应及唤醒。

若希望EXTI无法唤醒WFI,你可以不配置相应的NVIC。此时EXTI就没法唤醒CPU了。

nbh520 发表于 2017-7-6 16:39:38

xmshao 发表于 2017-7-6 14:45
__disable_irq函数 只是关闭了CPU的中断响应,它相当于中断控制总开关。
此时即使产生了允许的中断请求事件 ...

明白了,也就是说STM32的EXTI中断只要正确配置后,在使用WFI指令时,__disable_irq对其没有任何影响
页: [1]
查看完整版本: STM32芯片__disable_irq关闭中断后,调用__WFI()指令,CPU为什么...