江協的 stm32 教程的最後一期是教我們用 flash 存儲(其實這之後還有 can 通信,他單獨拿出來了)
(一)什麼是 flash#
Flash 存儲器(FLASH EEPROM)又稱閃存,快閃。它是 EEPROM 的一種。它結合了 ROM 和 RAM 的長處。不僅具備電子可擦除可編輯(EEPROM)的性能,還不會斷電丟失數據同時可以快速讀取數據。它於 EEPROM 的最大區別是,FLASH 按扇區(block)操作,而 EEPROM 按照字節操作。FLASH 的電路結構較簡單,同樣容量占芯片面積較小,成本自然比 EEPROM 低,因此適合用於做程序存儲器。
STM32F1 系列的 FLASH 包含程序存儲器、系統存儲器和選項字節三個部分,通過閃存存儲器接口(外設)可以對程序存儲器和選項字節進行擦除和編程。
讀寫 FLASH 的用途:
利用程序存儲器的剩餘空間來保存掉電不丟失的用戶數據。
通過在程序中編程(IAP),實現程序的自我更新。
在線編程(In-Circuit Programming – ICP)用於更新程序存儲器的全部內容,它通過 JTAG、SWD 協議或系統加載程序(Bootloader)下載程序。
在程序中編程(In-Application Programming – IAP)可以使用微控制器支持的任一種通信接口下載程序。
(二)flash 模塊組織#
stm32 的 flash 模塊分為:主儲存器(存儲代碼部分)、信息快(存儲啟動程序和選項字節部分)、以及接口寄存器(鏈接外設部分)。
(三)flash 結構#
flash 結構圖如下:
(四)代碼部分#
是的,我們直接快進到了代碼部分,為什麼呢?雖然 flash 的使用要更改不少的寄存器,但標準庫已經幫我們封裝好了,只要簡單調用即可。
值得注意的是,在寫入前必須要先擦除,否則無法修改。
以及,我們的數據存儲地址需要放在末尾,不然會跟程序代碼衝突。
那麼,flash 的學習筆記就這麼多,偷個懶就這樣了,接著我去學學 pcb 布線就搞個項目玩玩。