你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于STM32进入停机模式和唤不醒死机的几个疑问~

[复制链接]
liangliangwa 提问时间:2017-10-1 11:21 /
最近在使用STM32做了停止模式以达到低功耗的目的,其中有一点不理解的地方:
1.当调用库函数进入待机模式时,库函数最后一句使用了__WFI();找到是这样定义的,static __INLINE  void __WFI()                     { __ASM ("wfi"); }请问这句话是什么意思?怎么理解?(看了网上的一些信息,说是WFI是内核等待外部中断的一个指令)

2.使用库函数之后,的确能正常进入停止模式,可是当我再次使用外部中断的时候,没法唤醒,需要重新上电,感觉是程序死了,不知道这种情况有大神遇到没有,还希望给出一些建议,谢谢!
1 收藏 评论6 发布时间:2017-10-1 11:21

举报

6个回答
Dandjinh 回答时间:2017-10-1 12:07:54
wfi是Wait For Interrupt的缩写,就是等待外部中断唤醒

至于唤醒不起来,一般就是没有把唤醒管脚配置对,可以参考下cube里面的例程

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

酱哒哒 回答时间:2017-10-1 22:10:30
首先,我觉得你需要看看我的低功耗课堂的笔记,嘿嘿嘿,https://www.stmcu.org.cn/module/forum/thread-610510-1-1.html,读完你对于低功耗应该会有深刻的理解。

其次,进入低功耗模式下,有两类退出低功耗的方式,一种叫WFI(wait for interrupt等待中断),另一种叫WFE(wait for event等待事件);这两个的具体区别,你可以参考下STM32 XXX系列的Reference manual里面的PWR章节,其中对于低功耗模式退出讲得比较详细。读完,你对于WFI和WFE的理解就会加深(其实区别不大,只不过涉及到一些寄存器值的配置不同)

最后,外部中断如果不能触发,可能是你的EXTI中断配置有问题。

最后的最后,提醒你一下,ST官网或者STM32CUBE的资源包里面包含有各种例程,你说的这种stop模式EXTI退出是有官方例程的,可以下个资源包,对比看看。

评分

参与人数 2ST金币 +11 收起 理由
zero99 + 5
MrJiu + 6 很给力!

查看全部评分

liangliangwa 回答时间:2017-10-2 22:35:39
酱哒哒 发表于 2017-10-1 22:10
首先,我觉得你需要看看我的低功耗课堂的笔记,嘿嘿嘿,https://www.stmcu.org.cn/module/forum/thread-610510- ...

感谢回复,谢谢提供参考资料!
573203929@qq.co 回答时间:2017-10-11 11:25:43
tangwenxiao 回答时间:2017-10-11 16:50:59
待机模式,需要使用特定的引脚进行唤醒,上升沿唤醒。待机模式下,所有时钟都是停止的,怎么可能能进入中断呢。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

liangliangwa 回答时间:2017-10-16 15:13:58
tangwenxiao 发表于 2017-10-11 16:50
待机模式,需要使用特定的引脚进行唤醒,上升沿唤醒。待机模式下,所有时钟都是停止的,怎么可能能进入中断 ...

感谢回复,是停机模式,不是待机模式。审题~~~~~
关于 意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
13245底部标题123相同标题
12底部标题123相同标题
33333底部标题123相同序号
3435底部标题-无链接
关注我们
st-img 微信公众号
st-img 手机版