電子時鐘制作(瑞薩RA)(8)----保存數據到flash
概述
本篇文章主要介紹如何使用e2studio對瑞薩進行Flash配置,并且分別對Code Flash & Data Flash進行讀寫操作。 Flash有Code Flash(儲存程序代碼)以及Data Flash(儲存一般數據),其中Code Flash主要以NOR型為主,儲存系統(tǒng)程序代碼及小量數據;而Data Flash則是以NAND型為主,用于儲存大量數據。
硬件準備
首先需要準備一個開發(fā)板,這里我準備的是芯片型號R7FA2E1A72DFL的開發(fā)板:

?

視頻教程
https://www.bilibili.com/video/BV1ck4y1K72M/

Flash
對Code Flash進行讀寫操作時候,特別要注意寫的地址,因為如果寫的不對,會覆蓋到代碼區(qū),造成運行錯誤,同時對于擦除,是一塊的數據都會直接擦除掉。 在RA2E1中,Code flash最高為128KB,Data flash為4KB。

FLASH配置
點擊Stacks->New Stack->Storage -> Flash (r_flash_lp)。?

FLASH屬性配置

Data Flash
對Data Flash進行讀寫操作時候,特別要注意要等待Data Flash寫完才能進行后續(xù)讀寫操作。 在RA2E1中,Data Flash分布如下所示。?

?回調函數的話有下列事件會進行觸發(fā)。?

新建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
主程序