本帖最后由 nbh520 于 2017-7-21 10:32 编辑 Cortex M0内核 ,CPU调用__disable_irq函数关闭中断后,进入睡眠模式,并且调用__WFI()函数,等待中断,结果当有外部中断进入时,CPU唤醒。 跪求大神指教这是什么原理,关闭中断后,等待中断,然后中断来了,想不明白
__disable_irq函数 只是关闭了CPU的中断响应,它相当于中断控制总开关。
此时即使产生了允许的中断请求事件,并做好了相关NVIC配置,cpu也不会去运行相关中断服务程序。
如果此时相关EXTI的中断使能及NVIC控制都是使能的,就不影响WFI的响应及唤醒。
若希望EXTI无法唤醒WFI,你可以不配置相应的NVIC。此时EXTI就没法唤醒CPU了。
明白了,也就是说STM32的EXTI中断只要正确配置后,在使用WFI指令时,__disable_irq对其没有任何影响