如何合理的運用stm32的flash記憶體

2021-08-19 10:33:13 字數 638 閱讀 9101

關於stm32的flash操作,網上已經有很多詳細的介紹了,這裡只是總結一些告誡。

在使用flash儲存資料的時候,對於新手來說,並不知道該把資料存在哪乙個位址上,怕存到程式區域,或者越界。

關於這一點很容易搞清楚,首先我們需要看我們編譯出的程式有多大。

上圖可以計算出程式的大小,bin=code+ro+rw

17984+440+152=18576 位元組

由於stm32的flash是按頁計算大小的,所以程式寫入時會是19k,或者20k,這個關係到flash大小問題,

小容量的乙個頁是1k,大容量是2k,因為在寫入資料時會先擦除該頁,如果此時寫入的資料在18576-19000k之間,那麼

18000-18576屬於程式段的資料將被擦除,可能導致程式無法執行了。所以此時應該把資料儲存在19k後。

如果你的晶元是64k,那麼可以用於存資料的位址範圍為19k——64k直接,也就是0x08004a38——到0x080010000.

說一下 zi 資料,這個資料全是0xff,所以是無效資料,所以在編譯時並沒有編譯到程式中,在執行時才會有記憶體使用,所以應該也需要留出這個區域的大小供程式執行。

stm32實際運用中遇到的問題

1.不要太相信stm32內部的io上下拉,必要的話,在外部接上下拉電阻。2.當把jtag的io 口當成普通 io口來使用時,要先禁止 即 要使用到pb3 pb4 pa13 pa14 pa15 時,要先禁止 jtag。在庫函式中,呼叫一下函式 gpio pinremapconfig gpio rema...

stm32如何執行軟復位 STM32啟動檔案

我們日常使用的嵌入式應用程式開發中都是編寫c c 語言,我們平時編輯乙個工程的話,只用從main函式開始編輯,微控制器程式也是從這個函式開始進行執行的。但是微控制器上電後是如何尋找到並執行main函式的呢?我們其實都會在心裡有乙個答案 啟動檔案 還記得我們當初配置第乙個stm32工程的時候在工程中新...

STM32 的串列埠

一 串列埠使用 原則 盡量中斷中不要有延時 比如自定義delay 和自定義printf串列埠列印,明顯找事啊這麼慢能不發生溢位error嘛 接收和傳送盡量分開處理 1.串列埠傳送資料丟失 1 通常是因為傳送之前未檢測tc狀態位之前是否處於傳送完成標誌導致,關於stm32之 的測試程式來講會導致第乙個...