STM32的Flash地址空间的数据读取
目錄
一、STM32內部FLASH地址簡介
二、Flash地址空間的數據讀取
1.CubeMX創建工程
2.工程代碼修改
3.調試前配置
4.硬件連接?
5.調試?
三、總結?
四、參考資料
一、STM32內部FLASH地址簡介
在 STM32 芯片內部有一個 FLASH 存儲器,它主要用于存儲代碼,我們在電腦上編寫 好應用程序后,使用下載器把編譯后的代碼文件燒錄到該內部 FLASH 中,由于 FLASH 存 儲器的內容在掉電后不會丟失,芯片重新上電復位后,內核可從內部 FLASH 中加載代碼并 運行,見圖
圖 STM32 的內部框架圖
除了使用外部的工具(如下載器)讀寫內部 FLASH 外,STM32 芯片在運行的時候, 也能對自身的內部 FLASH 進行讀寫,因此,若內部 FLASH 存儲了應用程序后還有剩余的 空間,我們可以把它像外部 SPI-FLASH 那樣利用起來,存儲一些程序運行時產生的需要掉 電保存的數據。
由于訪問內部 FLASH 的速度要比外部的 SPI-FLASH 快得多,所以在緊急狀態下常常 會使用內部 FLASH 存儲關鍵記錄;為了防止應用程序被抄襲,有的應用會禁止讀寫內部 FLASH 中的內容,或者在第一次運行時計算加密信息并記錄到某些區域,然后刪除自身的 部分加密代碼,這些應用都涉及到內部 FLASH 的操作。
二、Flash地址空間的數據讀取
1.CubeMX創建工程
選擇stm32f103c8芯片后,配置SYS
配置RCC
配置引腳
?配置時鐘樹
中斷配置
調整堆棧大小
2.工程代碼修改
工程源碼
提取碼:pmvn
將工程源碼中的flash.c和flash.h加入到工程中(flash.h文件放在INC文件夾下即可)
?在main.c中添加代碼
3.調試前配置
打開魔法棒,點擊Debug,選擇ST-Link Debugger、
點擊Settings,選擇Debug頁面,其中Port選擇SW
選擇Flash Download,設置如下圖
4.硬件連接?
連接硬件ST-Link,需要下載STLink驅動
STLink驅動
提取碼:07tq
硬件連接如下圖:
5.調試?
點擊,將程序下載到STM32中,結果如下圖
點擊,進入調試?
點擊View->memory windows->memory1,打開內存觀察窗口
?在地址欄中輸入0x800C000,觀察FLASH區間內容
點擊鼠標右鍵選擇顯示格式
點擊View->Watch?windows->memory1,打開變量觀察窗口
將變量FlashWBuff和FlashRBuff加入到Watch1觀察窗口
點擊View,勾選Periodic Windows Update,開啟變量自動更新
全速運行,這時候就會看到Watch1窗口中?FlashWBuff,FlashRBuff中的內容全部變的一樣
在Memory1窗口中可以看到在FLASH地址0x0800C000成功寫入內容
斷電后在重新接電調試,可以發現程序停在main函數入口處時還可以看到Flash對應區間的內容保持上一次寫入內容值。
三、總結?
此次實驗最大的阻礙就是,好幾次當我快要寫完博客時,sb csdn突然抽風搞得我之前寫的東西都沒了,只能重寫,2021年最后一天心態全無。
四、參考資料
STM32 進階教程 13 – FLASH的讀寫操作
總結
以上是生活随笔為你收集整理的STM32的Flash地址空间的数据读取的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java android 读写三菱PLC
- 下一篇: p2p与反p2p