stm32 Flash讀寫 庫函式

2022-04-04 08:59:51 字數 1514 閱讀 7804

stm32 的內建可程式設計flash在許多場合具有十分重要的意義。如其支援icp特性使得開發人員對stm32可以警醒除錯開發,可以通過jtag和swd介面對stm32進行程式燒寫;支援iap特性使得開發人員可以在stm32執行程式的時候對其內部程式進行更新操作。對一些對資料安全有要求的場合,可程式設計flash可以結合stm32內部唯一的身份標識實現各種各樣的防破解方案。並且stm32的flash在一些輕量級的防掉電儲存方案中也有立足之地。

一. stm32的flash分為

1.主儲存塊:用於儲存具體的程式**和使用者資料,主儲存塊是以頁為單位劃分的,

一頁大小為1kb。範圍為從位址0x08000000開始的128kb內。

2.資訊塊   :用於負責由stm32出廠是放置2kb的啟動程式(bootloader)和512b的使用者配置資訊區

二.操作原則

對flash 的寫入操作要 「先擦除後寫入」的原則;

stm32的內建flash 程式設計操作都是以頁為單位寫入的,而寫入的操作必須要以16位半字寬度資料位單位,允許跨頁寫,寫入非16位資料時將導致stm32內部匯流排錯誤。

進行內建flash讀寫時,必須要開啟內部rc振盪器。

#include "stm32f10x.h"

#include "stdio.h"

#define  printf_on  1

void rcc_configuration(void);

void gpio_configuration(void);

void usart_configuration(void);

u32 count=0;

u16 data[5]=;

int main(void)

flash_lock();

count = 0;

printf("\r\n the five data is : \r\n");

while(count < 5)

while(1);

}void gpio_configuration(void)

void rcc_configuration(void)

/* 開啟apb2匯流排上的gpioa時鐘*/

rcc_apb2periphclockcmd(rcc_apb2periph_gpioa|rcc_apb2periph_usart1, enable);

//rcc_ahbperiphclockcmd(rcc_ahbperiph_dma1, enable);

//rcc_apb1periphclockcmd(rcc_apb1periph_pwr,enable);

//rcc_apb1periphclockcmd(rcc_apb1periph_pwr|rcc_apb1periph_bkp|rcc_apb1periph_wwdg, enable);

}void usart_configuration(void)

#if  printf_on

int fputc(int ch,file *f)

#endif

stm32 Flash讀寫 庫函式

通過對stm32內部的flash的讀寫可以實現對stm32的程式設計操作。stm32 的內建可程式設計flash在許多場合具有十分重要的意義。如其支援icp特性使得開發人員對stm32可以警醒除錯開發,可以通過jtag和swd介面對stm32進行程式燒寫 支援iap特性使得開發人員可以在stm32執...

stm32flash的讀寫特性

在使用stm32自帶的flash儲存資料時候,如下特點必須知道 1 必須是先擦除乙個扇區,才能寫入 2 讀資料沒有限制 3 寫資料必須是2位元組,同時寫入位址以一定要考慮位元組對齊,4 一般都是在最後幾頁進行資料儲存的,確保資料量不超過flash的的大小,比如f103大容量是2k位元組,其實乙個扇區...

STM32 Flash 擦除 讀寫 成功

參考 要點 將資料寫入flash之前,每次都要擦除,否則會寫入不成功,出現的錯誤狀態為 flash status flash error pg 寫入資料成功後可以在memory 中檢視剛剛寫入的資料,具體在memory 視窗中輸入 0x08010000,既可以看到此處的資料為 data 0x1504...