STM32——FLASH(掉電保存)
今天使用STM32的FLASH進(jìn)行保存數(shù)據(jù),實(shí)現(xiàn)掉電保存的功能。
掉電保存:使用FLASH存儲(chǔ)時(shí),在每一次數(shù)據(jù)刷新后,進(jìn)行一次存儲(chǔ)即可。
PS:重新下載時(shí),會(huì)刷新保存的數(shù)據(jù)。
FLASH編程思路:
寫入:先執(zhí)行擦除數(shù)據(jù)(頁擦除||全片擦除),再進(jìn)行寫入操作
寫入范圍:0x08000000 +程序大小 < 寫入地址 + 寫入字節(jié) <= flash大小(根據(jù)芯片的數(shù)據(jù)手冊(cè)可以查看)
flash寫入過程:
1,讀FLASH_CR的LOCK
2,F(xiàn)LASH_SR的BSY位,是否有其他編程正在操作
3,設(shè)置FLASH_CR的PG位為1
4,指定的地址寫入要編程的半字
5,等待BSY位變?yōu)?
6,讀出寫入的地址并驗(yàn)證數(shù)據(jù)
flash頁擦除過程
1,讀FLASH_CR的LOCK
2,檢查FLASH_SR的BSY位,是否有其他編程正在操作
3,置FLASH_CR的PER = 1;
4,用FLASH_AR選擇要擦除的頁
5,置FLASH_CR的STRT = 1
5, 等待BSY位變?yōu)?
6,讀出驗(yàn)證擦除頁的數(shù)據(jù)
附上程序源碼:
鏈接:http://pan.baidu.com/s/1eSDu7Fs 密碼:ksf0