最近在使用STM32做了停止模式以达到低功耗的目的,其中有一点不理解的地方: 1.当调用库函数进入待机模式时,库函数最后一句使用了__WFI();找到是这样定义的,static __INLINE void __WFI() { __ASM ("wfi"); }请问这句话是什么意思?怎么理解?(看了网上的一些信息,说是WFI是内核等待外部中断的一个指令) 2.使用库函数之后,的确能正常进入停止模式,可是当我再次使用外部中断的时候,没法唤醒,需要重新上电,感觉是程序死了,不知道这种情况有大神遇到没有,还希望给出一些建议,谢谢! |
至于唤醒不起来,一般就是没有把唤醒管脚配置对,可以参考下cube里面的例程
评分
查看全部评分
其次,进入低功耗模式下,有两类退出低功耗的方式,一种叫WFI(wait for interrupt等待中断),另一种叫WFE(wait for event等待事件);这两个的具体区别,你可以参考下STM32 XXX系列的Reference manual里面的PWR章节,其中对于低功耗模式退出讲得比较详细。读完,你对于WFI和WFE的理解就会加深(其实区别不大,只不过涉及到一些寄存器值的配置不同)
最后,外部中断如果不能触发,可能是你的EXTI中断配置有问题。
最后的最后,提醒你一下,ST官网或者STM32CUBE的资源包里面包含有各种例程,你说的这种stop模式EXTI退出是有官方例程的,可以下个资源包,对比看看。
评分
查看全部评分
感谢回复,谢谢提供参考资料!
评分
查看全部评分
感谢回复,是停机模式,不是待机模式。审题~~~~~