STM32待机模式下的问题探讨

[复制链接]
1282|11
 楼主| tianye907 发表于 2019-2-19 11:07 | 显示全部楼层 |阅读模式
做了个温湿度传感器,需要定时采样,然后到了一定时间通过NBiot模组发送出去。单片机是待机低功耗模式,rtc闹钟唤醒。因为每次唤醒都相当于复位,所以里面的变量就都清零了。如果我将每次采样的数据都保存到flash,那这样的话,flash擦写又会有寿命次数限制。不保存到falsh的话,变量又会清零。低功耗模式还不想换停机模式。请问有什么办法,不写入falsh,却又能让变量在单片机被唤醒后,不清零?
caoenq 发表于 2019-2-19 11:18 | 显示全部楼层
加个FRAM芯片就可以了
你瞅啥 发表于 2019-2-19 11:23 | 显示全部楼层
改链接脚本呗,对于iar来说是icf文件,对于gcc来说是ld文件,对于mdk来说是sct文件,把不想被清零的变量放到ZI区以外就可以了。
coody 发表于 2019-2-19 12:08 | 显示全部楼层
我以为只有我讨厌STM32F103的唤醒等同于复位,这个特性真的很垃圾,不能像各种8位机那样睡眠唤醒,SRAM和寄存器的信息都不丢失,睡眠电流还很小。
 楼主| tianye907 发表于 2019-2-19 13:09 | 显示全部楼层
coody 发表于 2019-2-19 12:08
我以为只有我讨厌STM32F103的唤醒等同于复位,这个特性真的很垃圾,不能像各种8位机那样睡眠唤醒,SRAM和寄 ...

确实
 楼主| tianye907 发表于 2019-2-19 13:11 | 显示全部楼层
你瞅啥 发表于 2019-2-19 11:23
改链接脚本呗,对于iar来说是icf文件,对于gcc来说是ld文件,对于mdk来说是sct文件,把不想被清零的变量放 ...

可否说的再清晰一些?
你瞅啥 发表于 2019-2-19 13:54 | 显示全部楼层
tianye907 发表于 2019-2-19 13:11
可否说的再清晰一些?

用gcc的好些一些,因为初始化文件crt0.s是公开的可以修改的,判断标志位是上电还是唤醒导致的复位,如果是唤醒就不往bss段里面写零就行了。IAR新版的貌似也给了初始化代码,可以代替库文件里面的。MDK应该暂时没什么好办法。
mohanwei 发表于 2019-2-19 14:08 | 显示全部楼层
Sleep和Stop这两种模式功耗还不够低么?
如果还不够,说明选型不当。可以考虑STM8L系列
 楼主| tianye907 发表于 2019-2-20 15:34 | 显示全部楼层
mohanwei 发表于 2019-2-19 14:08
Sleep和Stop这两种模式功耗还不够低么?
如果还不够,说明选型不当。可以考虑STM8L系列 ...

用了停机模式。可以接受。STM8L没用过,不了解
mohanwei 发表于 2019-2-20 16:38 | 显示全部楼层
tianye907 发表于 2019-2-20 15:34
用了停机模式。可以接受。STM8L没用过,不了解

Stop模式,唤醒时是不会复位的。除非用的是看门狗唤醒
 楼主| tianye907 发表于 2019-2-21 11:13 | 显示全部楼层
mohanwei 发表于 2019-2-20 16:38
Stop模式,唤醒时是不会复位的。除非用的是看门狗唤醒

是 待机模式复位太恶心,换用停机模式
泰山特曲123 发表于 2019-2-22 07:36 来自手机 | 显示全部楼层
参考手册已说明,待机模式,SRAM是没有电,丢失的;改链接配置文件可能存在风险,因为SRAM没有电了,数据得不到保证,即使你上电复位后不去修改SRAM的数据
您需要登录后才可以回帖 登录 | 注册

本版积分规则

74

主题

457

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部