我正在构建一个小型嵌入式设备。我正在使用复位开关,当按下这个开关超过5秒时,整个设备应该复位并清除所有数据,并进入出厂复位状态。当此事件发生时,我知道要清除什么。我想知道的是如何引发此事件?我的意思是,当按下开关时,我如何设计系统才能知道5秒已经过去,我必须现在重置。我需要任何定时器和中断的高水平设计。谁能帮帮我?
发布于 2016-03-04 18:49:30
取决于设备。但有几个粗略的想法:
设备手册可能会说“按下开关”(switch down)所产生的每秒中断次数。如果你有这个值,你可以很容易地计算出5秒。
如果不是,你也需要使用计时器。当您收到第一次"switch down“中断时,启动计时器,并计时至5秒。
请注意,您还应该监控"switch up",即“switch of switch”。我希望这也会有一个中断。(可能具有不同的状态值)。所以当你看到这个中断时,你应该中断上面的循环(你不应该做重置)。
希望这能有所帮助。
发布于 2016-03-04 22:03:25
中断驱动意味着低电平,接近硬件。一个中断驱动的解决方案,例如一个裸机微控制器,看起来像这样:
发布于 2016-03-06 05:19:09
检测5S或30S超时可以使用中断上的GPIO来完成。
如果使用rtos,。中断将把线程从睡眠中唤醒并禁用其自身,
。所有线程所做的就是计算按下开关的时间(您以固定的时间间隔扫描开关)
。如果按下开关所需的时间,则在中设置全局变量/设置,这将触发出厂复位功能
。否则将再次启用中断并使线程进入休眠状态
。此外,使用去反跳电路以避免出现问题。
还要定义什么是出厂重置?
通常有两种情况,这两种情况我将帮助使用eeprom
在这种情况下,您对eeprom进行分区,具有工作配置和出厂配置。您将出厂配置复制到工作分区并执行软件重置
在这种情况下,二进制固件blob还将与出厂配置一起存储在安全分区中,并将用于闪存控制器闪存和配置。
这一切都取决于大小/内存和成本。可以用更多的方式来设计,我只是列出了最简单的例子。
https://stackoverflow.com/questions/35793905
复制相似问题