断电数据保存问题
对于断电数据保存:
1 可以在每次操作时都将当前的状态保存到一个非易失地方,在上电后从改地址读出来初始化相关参数。优点:可靠但适合保存数量小的场合,缺点:效率不高。
2 也可以在掉电检测中断里面保存数据,上电时调出,但缺点是对突发断电可能没有足够的时间来存储。这适合有后备电源的场合。
- 使能PWR外设(加入 “stm32f4xx_pwr.h” 头文件,开启时钟,配置PVD电压级别)
- 开启外中断(NVIC分组,配置外中断并使能),因为PVD连接到了外中断16上了。在中断沿设置时要注意:电压值高于设定值时为 0,低于设定值时为1
- 外中断中进行数据保存。
关于存储介质:
对于存储少量参数:eerom比较合适,因为不用每次都整片搽除。但速度慢。
FLASH:上电时读到RAM,断电时写入FLASH(PVD检测,PVD中断中关闭外设后写数据,但需要后备电源).
也可以存在单片机的一些后备寄存器中。
关于FLASH搽除和写0XFF:
他们是有区别的,flash写(0/1)之前必须搽除。写0XFF在原来是1的情况下是没问题的,但之后写0就写不进去了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?