STM32CUBEMX(10)--Flash讀寫
概述
????本例程主要講解如何對芯片自帶Flash進(jìn)行讀寫,用芯片內(nèi)部Flash可以對一些需要斷電保存的數(shù)據(jù)進(jìn)行保存,無需加外部得存儲芯片,本例程采用的是STM32F030R8T6,64K大小的Flash。
硬件準(zhǔn)備
? ?首先需要準(zhǔn)備一個(gè)開發(fā)板,這里我準(zhǔn)備的是NUCLEO-F030R8的開發(fā)板。? ?

選擇芯片型號
????使用STM32CUBEMX選擇芯片stm32f030r8,如下所示:

配置時(shí)鐘源
????HSE與LSE分別為外部高速時(shí)鐘和低速時(shí)鐘,在本文中使用內(nèi)置的時(shí)鐘源,故都選擇Disable選項(xiàng),如下所示:

配置時(shí)鐘樹
????STM32F0的最高主頻到48M,所以配置48即可:

串口配置
????本次實(shí)驗(yàn)使用的串口1進(jìn)行串口通信,波特率配置為115200。

生成工程設(shè)置
????注意在生產(chǎn)工程設(shè)置中不能出現(xiàn)中文,不然會報(bào)錯(cuò)。

代碼生成設(shè)置
????最后設(shè)置生成獨(dú)立的初始化文件。

生成代碼

配置keil

代碼
????在main.c中,添加頭文件,若不添加會出現(xiàn) identifier "FILE" is undefined報(bào)錯(cuò)。
????函數(shù)聲明和串口重定向。
????變量定義。
????如果要對FLASH進(jìn)行寫入數(shù)據(jù),需要執(zhí)行以下四步:
解鎖FLASH
擦除FLASH
寫入FLASH
鎖住FLASH
????擦除只能是按頁或者整塊擦除。
????STM32F030芯片內(nèi)部的Flash存儲器內(nèi)存分布如下:

????STM32F030R8T6的Flash容量是64KB,所以只有63頁,每頁1KB。
????我們可以寫入到頁60中,即0x08007000-0x080073FF中。
????由于單片機(jī)是32位,故連續(xù)寫入多個(gè)uint32_t的數(shù)據(jù)時(shí),地址應(yīng)該依次增加4。
????主程序。
演示效果

????通過keil查看地址也可以看到,值正確寫入。
