完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
一、经常修改的参数如何处理
需要掉电保护的参数,如果没有掉电检测的话,那么每次修改参数就要进行保存。STM32单片机的擦除次数有限。 例如:我有三个short int的参数 A,B,C需要经常修改,他们占用的6个字节的空间。我再增加一个常数0x5555和ABC凑够8个字节的空间。第一次存储在0-7的位置;第二次存储在8-15的位置;第三次存储在16-23的位置……,一共可以存储125次。存储满125次以后,再擦除flash重新再写入。 如果flash的擦除次数是10K次。那么ABC的存储次数就是1250K次。 如果这个次数还不够,可以用10Kbytes的存储空间来做。 二、参数的初次写入。 为参数定义好空间后,参数的写入和读取比较容易。麻烦的是参数的第一次写入。 方式一、读入参数区不连续5个字的内容,如果都是0xffffffff,则认为参数区是空的,还没有写入参数,程序自动对参数区写入出厂值。 方式二、在机器上加入恢复出厂值的命令,生产了新品后,人工进行恢复出厂值操作。 方式三、在程序中定义一个const 类型的常量数组,并指定其存储位置即为参数的位置,这样编译器就会分配你指定的空间将常量数组存入FLASH中。只要在这个常量数组里做参数初始化即可。 const short int table[10] __at(0x08010000) = {0x1234} ; MDK3.03A开始就支持关键字 __at() 。 需要加#include 三、参数的保护 要考虑的读参数时会出现错误,也要考虑到写参数时会出现错误。 读错误的解决方式:参数写入要加入和校验。共50个16位参数,占用100字节。另取2个字节作为和校验区,把这100个字节的数加起来存入和校验区。读参数时读取102个字节,前面100个的和应该和后面的两个字节数相同。 写错误的解决方式: 1、写完参数后再读出来,判断读出的和写入的是否一致,若不一致,则重新写入。 2、加入冗余区,参数同时存入两个存储区A区,B区。另开一个区为C区。 A区为常用区,正常时参数存入A区。 A区连续5次写入错误,则认为A区为坏区,参数就存入B区。 C区是索引区,记录参数存入在A区还是B区。 原文摘自 dgqwkj.com |
|
|
|
STM32配合可编程加密芯片SMEC88ST的防抄板加密方案设计
657 浏览 0 评论
2334 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
2137 浏览 3 评论
4767 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2282 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-30 03:05 , Processed in 0.485447 second(s), Total 36, Slave 28 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号