stm32h7記憶體分配 談談H7的記憶體分配以及總結

2021-10-12 15:35:12 字數 1048 閱讀 4702

首先呢,大家在使用h743 的時候,在keil或者iar中,有乙個記憶體的勾選,如圖1,irom1表示flash的記憶體位址,h743是2m,所以,大小自然是2m,起始位址可以在參考手冊中找到,如圖2,這個比較容易理解,程式就是從這開始執行。

其次,是ram,743內部有1m,那麼這1m怎麼分的呢,直接說結論,從位址0x2000 0000開始到(0x3880 0000+64k)結束,加起來是1m,問題來了,為什麼我們配置的時候要用0x2400 0000開始的512k呢?不知道大家看參考手冊看的怎麼樣,開頭講了ram 的分配,1m的ram,分成了5大類,tcm、axi 、sram1/sram2/sram3/sram4、back,他們所在的區域不同,tcm包含itcm和dtcm,位址0x2000 0000的128k,位於d1域,itcm主要用來訪問程式**,也就是執行命令,dtcm用於資料訪問。先把所有的記憶體分配做個總結再說。

1、tcm分為itcm(執行**)和dtcm(資料訪問)

2、速度400mhz

axi sram 區

1、位於d1域,掛在axi匯流排

2、速度200mhz

sram1,sram2,sram3 區

1、位於d2域,掛在ahb匯流排

2、速度200mhz

sram4區

1、位於d3域,掛在ahb匯流排

2、速度200mhz

backup sram區

1、位於d3域,掛在ahb匯流排

2、速度200mhz

ok,還是原先的問題,為什麼要用0x2400 0000開始做程式的主ram呢,原因在於,如果使用者使用了sdmmc1,也就是比如sd卡的dma功能,或者其他用到了sdmmc1的話,該主裝置只接axi ram,不能使用其他ram讀取,可以不用,宣告變數的時候使用at   section指向axi位址也是可以的。

其他幾個ram,需要跟bdma用的時候進行區分,有些是不支援bdma的。剩下的就沒啥了,其他內容可以看下參考手冊第二章。

1.png

2019-11-16 15:18 上傳

圖12.png

2019-11-16 15:21 上傳

圖2

STM32H7 輸入捕獲(cubemax和hal)

簡述 使用tim2捕獲pwm ide keilv5.27 firmware package stm32cube fw h7 v1.8.0 晶元 stm32h750vbt6 開啟tim2輸入捕獲 配置psc為200 1,這裡主要是方便計算,計時器加一正好是1微妙。我配置的h750的主頻為400m,ap...

STM32H7系列使用DMA不能傳輸資料的問題

我使用dma進行spi傳輸時發現無資料,還好有個邏輯分析儀,不然有沒有訊號都不知道 這是匯流排訪問許可權的圖。表示不能訪問。d 表示直接訪問。其它的都是間接訪問。發現dma1只有itcm和dtcm不能訪問,問題就出在這。有句 tcm 介面上的 dtcm ram 對映到位址 0x2000 0000,可...

STM32的記憶體分配

使用keil編寫 區域性變數和全域性變數分別存放在什麼地方?在乙個函式內部定義的變數是內部變數,它只在本函式範圍內有效,也就是說只有在本函式內才能使用它們,在此函式以外是不能使用這些變數的,這稱為區域性變數。使用區域性變數注意以下問題 不同函式中可以使用相同名字的變數,它們代表不同的物件,互不干擾。...