STM32學習筆記 FLASH讀寫

2021-08-29 04:14:05 字數 1306 閱讀 8404

stm32的flash除了可以燒寫如程式外,還可以供給使用者做儲存器,儲存引數用,但是要注意的是,flsah的擦寫次數是有限制的,10萬次。

stm32f1系列微控制器核心是cortext-m3系列的,其儲存器的對映是按照cortext-m3的標準設計的,如下圖。

從上圖可看出最下main的512m是分配給code 即程式儲存區. 其內部分配如下圖。

從上圖可以看到flash的起始位址是:0x0800 0000 到 0x0807 ffff ,126m的flash空間。stm32按頁來程式設計擦寫flash,如我的 stm32f103rct6 sram為48kb,flash有256k. 分頁是2kb一頁來設計的,而又的小容量的微控制器是1kb一頁。

可以算出127+1=128*2kb=256kb。

//flash讀寫**如下 寫之前要擦除一整頁的資料。寫入資料要傳入乙個32位的位址,一次寫入1個16位的資料(半字)。

//u32 addr - flash位址

//u16 dat  - 寫入資料

//有關stm32f103rct6的flash詳細情況學習,請看我的筆記。

void flash_write(u32 addr, u16 dat)

//從flash讀取半個字

u16 flash_read_halfword(u32 addr)

有關資料儲存讀取的可靠性思考。一直以來,見過我司好多儀表的引數儲存,都是直接一次寫入到eeprom或者flash中。 在設計時不考慮到,當程式正在寫入引數斷電時或上電抖動造成引數的儲存和讀取失效。這種失效後的保護機制如何設計?

拿stm32來說,如果flash充裕,可以將資料儲存在3個頁。(最好3個不連續的位置)。

1:存資料邏輯。對要寫入的資料按模組或整體做校驗,校驗碼作為存入引數的一部分,要寫入flash。

存入第1個頁,存好後,立刻讀取,判斷是否存好。然後依此操作存後面2頁資料。

2:讀資料邏輯。讀取第1頁資料後,做校驗,看資料是否正確,如果不正確讀後面2個。如果所有的頁,資料都不正確,那麼就使用程式原**內值.同時產品要報出引數讀取錯誤狀態。

STM32學習筆記

剛到公司實習,要學習stm32開發,boss給了一塊戰艦開發板,讓我自己寫乙個功能要用在公司的產品上。難啊。以前根本沒接觸過stm32,只能一步一步慢慢來,利用晚上利用週末惡補一下。哎,算是為了大學前兩年還債吧。一 跑馬燈實驗 gpio輸出 實驗環境 keil4 實驗平台 戰艦stm32開發板 gp...

stm32學習筆記

開漏模式輸出 輸出暫存器上的 0 啟用 n mos,而輸出暫存器上的 1 將埠 置於高阻狀態 p mos從 被啟用 推挽模式輸出 輸出暫存器上的 0 啟用 n mos,而輸出暫存器上的 1 將啟用 p mos。上拉輸入 輸入高電平,然後接乙個 上拉電阻 保護作用 讀取此時的引腳電平為高電平 下拉輸入...

學習筆記 stm32

簡介cortex核心 cortex m4核心 庫開發與暫存器開發的關係 stm32 韌體庫與 cmsis 標準 內部結構 最小系統 小馬哥四軸原始碼學習 新建工程 點燈!gpio 按鍵暫存器對映 時鐘系統 systick定時器 埠復用和重對映 串列埠串列埠試驗函式分析 中斷看門狗 通用定時器 階段性...