您的位置 首页 新能源

STM32单片机退出中止形式时呈现死机现象的原因剖析

STM32单片机退出停止模式时出现死机现象的原因分析-根据手册和开发板给的源码,直接实现停止模式,但是发现退出时就发生死机现象,并没有进入恢复正常,只执行了中断函数中一个或者两个语句(是随机的)。

依据《STM32中文参考手册》描绘,STM32的低功耗形式有三种:睡觉形式,中止形式,待机形式。(有些材料说其实只要两种形式,不存在睡觉形式一说)。其间待机形式可完成体系的最低功耗,所以本来想选用该形式。可是《STM32中文参考手册》说到从待机形式唤醒后的代码履行等同于复位后的履行(采样发动形式引脚、读取复位向量等),板子接了屏,再快再快也需求时刻去加载界面,所以速度仍是慢了。之后选用测验选用中止形式,图1为中止形式的进入和退出办法。

STM32单片机退出中止形式时呈现死机现象的原因剖析

图1

依据手册和开发板给的源码,直接完成中止形式,可是发现退出时就产生死机现象,并没有进入康复正常,只履行了中止函数中一个或许两个句子(是随机的)。

看例程,度娘等走了一圈,表现出来的原因应该是这样的,因为THUMB指令不支持汇编内联,所以选用如下办法完成履行汇编指令WFI,创建了一个WFI_SET()函数,其函数原型:

__asm void WFI_SET(void)

{

WFI;

}

表现出来的原因是:被Sys_Sleep()函数调用的时分,并没有在编译时把WFI_SET()的内容inline到Sys_Sleep()函数里边去,而是一个一般的函数在运行时被调用,呈现了死机现象。后来将WFI_SET()函数修改为:

__asm void __inline WFI_SET(void)

{

WFI;

}

问题解决。

但根本原因是不是跳出WFI_SET()函数出的错,仍是其他原因,后续进一步承认。
来历;21ic

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/xinnengyuan/344184.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部