打印
[STM32F4]

如何让STM32F4掉电,再重新上电后,各个IO口的输出状态保持

[复制链接]
6698|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wyjben|  楼主 | 2014-4-26 16:15 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 wyjben 于 2014-4-26 19:24 编辑

如何让STM32F4掉电,再重新上电后,各个IO口的输出状态保持和掉电前的一样。

或者换个说法:我用IO口控制了一个继电器,通过继电器来控制家里的电灯,当突然停电后,再来电,家里的灯要恢复到停电前的状态,也主是说停电前灯是开的,来电后灯也是开的,停电前灯是关的,来电后灯也是关的。有没有其它的解决办法。
沙发
mmuuss586| | 2014-4-26 16:18 | 只看该作者
不行。

使用特权

评论回复
板凳
yzzly| | 2014-4-26 16:47 | 只看该作者
本帖最后由 yzzly 于 2014-4-26 16:55 编辑

每一个IO都要求保持与掉电前一样很困难,如果个别需要的话,可以在IO的输出后续电路加阻容二极管电路靠电路的延时保持。

未命名.bmp (1.03 MB )

未命名.bmp

使用特权

评论回复
地板
wyjben|  楼主 | 2014-4-26 19:21 | 只看该作者
yzzly 发表于 2014-4-26 16:47
每一个IO都要求保持与掉电前一样很困难,如果个别需要的话,可以在IO的输出后续电路加阻容二极管电路靠 ...

这个时间太短,我要可以永久保存的

使用特权

评论回复
5
yzzly| | 2014-4-26 21:44 | 只看该作者
真不知道你为什么要永久保存!

使用特权

评论回复
6
EAMCU| | 2014-4-27 09:24 | 只看该作者
加个存储器,每次设定后存储状态,下次开机按照存储结果来设置一遍。

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
wyjben + 3 赞一个!
7
wyjben|  楼主 | 2014-4-27 09:47 | 只看该作者
EAMCU 发表于 2014-4-27 09:24
加个存储器,每次设定后存储状态,下次开机按照存储结果来设置一遍。

我想要的就是这种结果了。这个存储器是不是像U盘使用的存储器一样,或者像SD卡一样?

使用特权

评论回复
8
foxpro2005| | 2014-4-27 10:09 | 只看该作者
本帖最后由 foxpro2005 于 2014-4-27 10:10 编辑

有几方法:
1. 如果有你RTC供电电池的话, 可以把数据放到后备域中去, 那里可以快速保存一部分变量数据;
2. 如果没有RTC的电池的话, 可以在掉电前把IO的状态保存到: Flash模拟的EEPROM中, 或者外挂EEPROM中

然后上电后,重新恢复之前的IO状态

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
wyjben + 3 赞一个!
9
wade_szcn| | 2014-4-27 10:57 | 只看该作者
简单方法:EE+掉电STORE+上电RESTORE

使用特权

评论回复
10
EAMCU| | 2014-4-27 15:16 | 只看该作者
wade_szcn 发表于 2014-4-27 10:57
简单方法:EE+掉电STORE+上电RESTORE

掉电存储不好弄啊,每次掉电都来不及写

使用特权

评论回复
11
sunnydr| | 2014-4-27 16:07 | 只看该作者
STM32在工作的时候只要IO口状态改变就将状态值写入到外部的Flash中,这样就避免了突然掉电而状态值来不及保存的情况吧。上电时从Flash中读取数据初始化IO

使用特权

评论回复
12
icecut| | 2014-4-27 19:14 | 只看该作者
这不就是每次状态改变就保存一下嘛..上电的时候根据状态去控制...
弄个电池让mcu不掉电或者,保存flash

使用特权

评论回复
13
heelary| | 2014-4-27 23:54 | 只看该作者
掉电存储不好弄啊,每次掉电都来不及写-----加大电源电容就行,往flash写一页只要15ms。

使用特权

评论回复
14
sjnh| | 2014-4-28 09:43 | 只看该作者
扩展一个串行FLASH 或 EEPROM,每次变化直接存储,每个存储带1个ID码;

不知道你是一个单片机控制1、2个灯,还是1个单片机控制整个家里所有灯;
理论计算:
    按照严格的1控多设计,除非家里灯多,普通家庭按照每天开关100次算,1年36500次,如果用EEPROM(1000000次寿命),可以用20多年;
如果用FLASH由于容量大,可以采用循环存储弥补寿命低的不足。
    每次开机根据ID码确认那个是最后的状态。

我以前设计的产品就是用的FLASH,循环存储,便宜(最早用的是带电池的SRAM,成本高,容量小,国标改后要求存储内容增加了很多,用铁电
或带电池的成本太高)。
你的产品是家用,FLASH坏的几率不大,偶尔碰到估计不会影响使用;如果不接受,也可以软件做校验,除了错的区域做标志。

使用特权

评论回复
15
lei129210| | 2014-4-28 09:50 | 只看该作者
修改后把修改值写入flash就好啊。

使用特权

评论回复
16
linweicong321| | 2017-6-30 18:28 | 只看该作者
求大神帮忙,我正在做这功能,但实现不了!

使用特权

评论回复
17
liu8xu| | 2017-8-2 16:41 | 只看该作者
我也正在做这功能,但在慢慢测试当中!!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

99

帖子

1

粉丝