如何对掉电存储空间进行初始化

注意

使用掉电存储空间前,建议先对掉电存储空间进行初始化,因为掉电存储空间中的数据大概率是随机的。

在没有写入的情况下请不要读取掉电存储空间中的数据,因为这个数据不一定符合你程序中的条件,可能会出现莫名其妙的问题

掉电存储空间初始化原理

  1. 先从1020的地址(或其他地址)读取一个数据出来

  2. 判断这个这个数据是否符合预先设计的数据(比如0x12345678,你也可以设置为其他数据,但不建议是0x00或者0xffffffff),

  3. 如果不符合,将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页
../_images/QA36_1.jpg