stm32 Flash讀寫 庫函式

2021-06-28 23:00:33 字數 3630 閱讀 9880

**:

通過對stm32內部的flash的讀寫可以實現對stm32的程式設計操作。

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

stm32的flash分為主儲存塊和資訊塊。主儲存塊用於儲存具體的程式**和使用者資料,資訊塊用於負責由stm32出廠是放置2kb的啟動程式(bootloader)和512b的使用者配置資訊區。

主儲存塊是以頁為單位劃分的,一頁大小為1kb。範圍為從位址0x08000000開始的128kb內。

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

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

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

main.c:

001#include "stm32f10x.h"

002#include "stdio.h"

003

004#define  printf_on  1

005

006voidrcc_configuration(void);

007voidgpio_configuration(void);

008voidusart_configuration(void);

009

010u32 count=0;

011

012u16 data[5]=;

013

014intmain(void)

015

035

036flash_lock();

037

038count = 0;

039

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

041

042while(count < 5)

043

051

052while(1);

053

054}

055

056voidgpio_configuration(void)

057

070

071voidrcc_configuration(void)

072

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

107rcc_apb2periphclockcmd(rcc_apb2periph_gpioa|rcc_apb2periph_usart1, enable);

108

109//rcc_ahbperiphclockcmd(rcc_ahbperiph_dma1, enable);

110

111//rcc_apb1periphclockcmd(rcc_apb1periph_pwr,enable);

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

113

114}

115

116

117voidusart_configuration(void)

118

138

139#if  printf_on

140

141intfputc(intch,file*f)

142

147

148#endif

stm32 Flash讀寫 庫函式

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...