stm32中flash的寫入與讀取

2021-08-31 09:33:12 字數 1235 閱讀 2470

stm32中flash應用的常見函式:

1.擦除函式:

flash_status flash_erasepage(u32 page_address)只要()裡面的數是flash第xx頁中對應的任何乙個位址!就是擦除xx頁全部內容。

2.flash寫入函式:

stmflash_write(uint32_t writeaddr,uint32_t *pbuffer,uint32_t numtowrite)

入參:writeaddr:要寫入flash中的首位址,stm32的flash位址起始於0x0800 0000,結束位址是0x0800 0000加上晶元實際的flash大小,不同的晶元flash大小不同,因此從理論上來說該位址可以從0x08000000進行寫入,但實際要考慮**所佔空間大小,所以該位址要錯過**段的位址,以防擦除時將**也擦除了。

pbuffer:該引數為要寫入flash中的資料的位址。

numtowrite:該引數為要寫入的資料的長度。

原始碼展示:

int stmflash_write(uint32_t writeaddr,uint32_t *pbuffer,uint32_t numtowrite)

{ flash_eraseinittypedef flasheraseinit;

hal_statustypedef flashstatus=hal_ok;

uint32_t sectorerror=0;

uint32_t addrx=0;

uint32_t endaddr=0;

int result = 0;

if(writeaddr函式入參:

faddr:要讀取字的位址。

4.從flash中讀取多個位元組函式:

stmflash_read(uint32_t readaddr,uint8_t *pbuffer,uint32_t numtoread)

函式入參:

readaddr:要讀取資料的首位址。

pbuffer:讀取資料之後的位址。

numtoread:要讀取位元組的大小。

函式原始碼:

void stmflash_read(uint32_t readaddr,uint8_t *pbuffer,uint32_t numtoread)

{ uint32_t i;

uint32_t tmp;

for(i=0;i總之從flash中讀取和寫入資料的關鍵在於資料的大小以及對位址的處理上,其他部分基本一樣。

stm32 讀寫內部Flash

stm32的flash分為主儲存塊和資訊塊。主儲存塊用於儲存具體的程式 和使用者資料,資訊塊用於負責由stm32出廠是放置2kb的啟動程式 bootloader 和512b的使用者配置資訊區。主儲存塊是以頁為單位劃分的,一頁大小為1kb。範圍為從位址0x08000000開始的128kb內。對flas...

STM32 讀寫內部Flash

flash模組組織 儲存器被組織為程式儲存器模組,資料eeprom模組和資訊塊。程式儲存器塊分為4 kb的扇區,每個扇區都是進一步分成16頁,每頁256位元組。該操作用於擦除程式儲存器中的頁面 64個字 要做到這一點 解鎖flash pecr暫存器 1.將pekey1 0x89abcdef寫入程式設...

STM32製作FLASH字型檔

w25q128!總空間 16m define spi font start 12 從12m開始寫入,其餘是檔案系統 define font16x16 spi addr spi font start 1024 16 4096 16x16字型檔 define font16x16 spi size 282...