电子时钟制作(瑞萨RA)(8)----保存数据到flash
概述
本篇文章主要介绍如何使用e2studio对瑞萨进行Flash配置,并且分别对Code Flash & Data Flash进行读写操作。 Flash有Code Flash(储存程序代码)以及Data Flash(储存一般数据),其中Code Flash主要以NOR型为主,储存系统程序代码及小量数据;而Data Flash则是以NAND型为主,用于储存大量数据。
硬件准备
首先需要准备一个开发板,这里我准备的是芯片型号R7FA2E1A72DFL的开发板:


视频教程
https://www.bilibili.com/video/BV1ck4y1K72M/

Flash
对Code Flash进行读写操作时候,特别要注意写的地址,因为如果写的不对,会覆盖到代码区,造成运行错误,同时对于擦除,是一块的数据都会直接擦除掉。 在RA2E1中,Code flash最高为128KB,Data flash为4KB。

FLASH配置
点击Stacks->New Stack->Storage -> Flash (r_flash_lp)。

FLASH属性配置

Data Flash
对Data Flash进行读写操作时候,特别要注意要等待Data Flash写完才能进行后续读写操作。 在RA2E1中,Data Flash分布如下所示。

回调函数的话有下列事件会进行触发。

新建flash_smg.c和flash_smg.h。 在主程序中加入该头文件

回调函数如下所示,在flash_smg.c里。
向Block0种写入时间分钟数据和小时数据,地址范围是0x40100000 - 0x40100FFF,在flash_smg.c里定义
在主程序中定义标志位进行数据保存判断。

在main主程序中,定义在按键修改完毕数据后进行保存。

同时需要在按键设置完毕进行数据保存,模式3中需要定义标志位为1。

同时需要注意变量引入到timer_smg.c。

同时在RTC时钟走到0秒时候保存一次数据。

读取函数如下所示,在flash_smg.h中。
同时在主程序中开启flash以及将保存的数据读取出来。 由于需要在RTC开启时放入该数据 ,故需要放在RTC开启前面。

flash_smg.c
flash_smg.h
主程序