如何对掉电存储空间进行初始化
注意
使用掉电存储空间前,建议先对掉电存储空间进行初始化,因为掉电存储空间中的数据大概率是随机的。
在没有写入的情况下请不要读取掉电存储空间中的数据,因为这个数据不一定符合你程序中的条件,可能会出现莫名其妙的问题
掉电存储空间初始化原理
先从1020的地址(或其他地址)读取一个数据出来
判断这个这个数据是否符合预先设计的数据(比如0x12345678,你也可以设置为其他数据,但不建议是0x00或者0xffffffff),
如果不符合,将0-1019的位置循环写入0,并且在1020的位置写入预先设定的数据,防止下次上电时重新初始化
以下代码写在program.s中
1 //以下代码只在上电时运行一次,一般用于全局变量定义和上电初始化数据
2 int sys0=0,sys1=0,sys2=0 //全局变量定义目前仅支持4字节有符号整形(int),不支持其他类型的全局变量声明,如需使用字符串类型可以在页面中使用变量控件来实现
3 int restFlag //自定义的变量
4 dim=100 //配置亮度
5 bauds=115200 //配置波特率
6 //从掉电存储区最后一个位置读取数据出来
7 repo restFlag,1020
8 //如果不是指定的数据,说明掉电存储区未初始化
9 if(restFlag!=0x12345678)
10 {
11 //用for循环初始化掉电存储空间
12 for(sys0=0;sys0<1020;sys0+=4)
13 {
14 wepo 0,sys0
15 }
16 //写入掉电存储区的标记位置,防止下次开机时重复初始化掉电存储区
17 wepo 0x12345678,1020
18 }
19 page 0 //上电刷新第0页