日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Flash地址空间的数据读取——STM32

發布時間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Flash地址空间的数据读取——STM32 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在嵌入式應用開發中,經常會遇到掉電后還要保存的信息,這些信息通常只能保存在外部的一些存儲芯片中,如外部flash,外部EEPROM, 其實這些信息同樣可以保存在STM32自帶的內部flash中

文章目錄

    • 一、STM32 的內部 FLASH 簡介
    • 二、工程驗證
    • 三、小結
    • 四、參考鏈接

一、STM32 的內部 FLASH 簡介

在 STM32 芯片內部有一個 FLASH 存儲器,它主要用于存儲代碼,我們在電腦上編寫好應用程序后,使用下載器把編譯后的代碼文件燒錄到該內部 FLASH 中,由于 FLASH 存儲器的內容在掉電后不會丟失,芯片重新上電復位后,內核可從內部 FLASH 中加載代碼并運行。

根據用途,STM32 片內的 FLASH 分成兩部分:主存儲塊和信息塊。
主存儲塊用于存儲程序,我們寫的程序一般存儲在這里;
信息塊又分成兩部分:系統存儲器、選項字節。 系統存儲器存儲用于存放在系統存儲器自舉模式下的啟動程序(BootLoader),當使用 ISP 方式加載程序時,就是由這個程序執行。這個區域由芯片廠寫入 BootLoader,然后鎖死,用戶是無法改變這個區域的。 選項字節存儲芯片的配置信息及對主存儲塊的保護信息。

除了使用外部的工具(如下載器)讀寫內部 FLASH 外,STM32 芯片在運行的時候,也能對自身的內部 FLASH 進行讀寫,因此,若內部 FLASH 存儲了應用程序后還有剩余的空間,我們可以把它像外部 SPI-FLASH 那樣利用起來,存儲一些程序運行時產生的需要掉電保存的數據。

由于訪問內部 FLASH 的速度要比外部的 SPI-FLASH 快得多,所以在緊急狀態下常常會使用內部 FLASH 存儲關鍵記錄;為了防止應用程序被抄襲,有的應用會禁止讀寫內部FLASH 中的內容,或者在第一次運行時計算加密信息并記錄到某些區域,然后刪除自身的部分加密代碼,這些應用都涉及到內部 FLASH 的操作。

二、工程驗證

flash工程下載鏈接:https://pan.baidu.com/s/11Tn8TocHT8qithneDyKFIQ
提取碼:pmvn

下載完成后打開文件夾,將路徑stm32_Flash\Drivers\CMSIS\Device\ST\STM32F1xx\Include下的system_stm32f1xx_20190722_092746.h文件修改為system_stm32f1xx.h,否則后面編譯會報錯

修改好后,打開工程,可以將想要存入Flash中的內容修改為自定義內容

uint8_t FlashTest[] = "Hello!631907030123";

編譯無報錯
進行程序調試前,先完成配置:
注意:下載的工程代碼調試用的是硬件 st-link debuger,不是軟件仿真,因此用軟件仿真做,可能情況略有不同(小編這里軟件仿真就沒有出現結果)
點擊Options->Debug->右邊使用硬件ST-Link Debugger

接著點擊S T-Link Debugger右邊的Settings

進入到Cortex-M Target Driver Setup的Debug頁面,其中的Port選擇為SW

依次點擊Flash Download->勾選Reset and Run->Add->選擇STM32F10x Med-density Flash->Add->確定即可

最后點擊OK完成硬件配置

由于要連接硬件ST-Link,所以要下載一個STLink驅動,不然下載不成功

鏈接:https://pan.baidu.com/s/13k0PVQfg5qAHXBKJ2IZiYA
提取碼:1234

連線如下圖

點擊左上角的LOAD按鈕將程序下載到STM32中

現在點擊dubug按鈕,進入硬件仿真調試

點擊View->memory windows->memory 1打開內存觀察窗口,并在地址欄中輸入:0x800C000,觀察將要修改的flash區間區容:

其中點擊某一字符右擊可選擇顯示格式

繼續View->Watch windows->Watch 1打開一個變量觀察窗口

將變量FlashWBuff 和FlashRBuff加入到Watch 1觀察窗口


另外View->勾選Periodic Windows Update,開啟變量自動更新

按如圖所示的全速運行按鈕或者F5

這時就可以看到Watch 1窗口的數組FlashRBuff中的內容與數組FlashWBuff中的內容是一樣的

同時在Memory 1窗口中可以看到在FLASH地址0x0800C000區成功寫入對應內容

斷電后再重新上電進行調試,程序停在main入口處時還可以看到Flash對應區間的內容保持上一次寫入內容值

三、小結

完成本次實驗內容后,對STM32 的內部 FLASH 有了一定的了解,明白了FLASH 的基本功能后,以后基于STM32的開發就可以省去一些外部FLASH或EEPROM了。

四、參考鏈接

1.https://blog.csdn.net/zhanglifu3601881/article/details/96632971
2.https://www.eefocus.com/embedded/399467

總結

以上是生活随笔為你收集整理的Flash地址空间的数据读取——STM32的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。