STM32CubeMX系列 記憶體管理

2021-10-24 14:44:26 字數 1760 閱讀 6996

1.記憶體管理簡介

stm32f103zet6內部有64kb的sram記憶體,加上外擴的128kb容量的sram後,可使用的記憶體還是比較多的。本例程將介紹一種簡單的記憶體管理方式(即分塊記憶體管理)來有效管理這些記憶體,類似於c語言中通過malloc函式和free函式來申請和釋放記憶體

記憶體管理是指軟體執行時對計算機記憶體資源的分配和使用的技術,其最主要的目的是如何高效、快速的分配,並且在適當的時候釋放和**記憶體資源。這裡介紹一種比較簡單的記憶體管理方法:分塊式記憶體管理,其實現原理如下圖示:

從上圖可以看出,分塊式記憶體管理由記憶體池和記憶體管理錶兩部分組成。記憶體池被等分為n塊,對應的記憶體管理表,大小也為n,記憶體管理表的每乙個項對應記憶體池的一塊記憶體。

記憶體管理表的項值代表的意義為:當該項值為0的時候,代表對應的記憶體塊未被占用,當該項值非零的時候,代表該項對應的記憶體塊已經被占用,其數值則代表被連續占用的記憶體塊數。比如某項值為10,那麼說明包括本項對應的記憶體塊在內,總共分配了 10 個記憶體塊給外部的某個指標。

內寸分配方向如圖所示,是從頂→底的分配方向。即首先從最末端開始找空記憶體。當記憶體管理剛初始化的時候,記憶體表全部清零,表示沒有任何記憶體塊被占用。

2. 硬體設計

d1指示燈用來提示系統執行狀態,k_up用來申請記憶體,k_down用來釋放記憶體,k_right用來選擇所操作的記憶體,tftlcd和串列埠1用來顯示記憶體狀態及記憶體使用率

以上硬體的電路圖,在之前的例程中都有介紹過,請參考相應的例程

3. 軟體設計

3.1 stm32cubemx設定

3.2 mdk-arm程式設計

幾個重要函式:

/*釋放記憶體*/

void

myfree

(u8 memx,

void

*paddr)

/*分配記憶體*/

void

*mymalloc

(u8 memx,u32 size)

/*重新分配記憶體*/

STM32CubeMX系列 待機喚醒

1.低功耗模式簡介 系統或電源復位後,微處理器處於執行狀態,執行狀態下hclk為cpu提供時鐘,核心執行程式 當cpu不需繼續執行時 例如等待某個外部事件 可以利用多個低功耗模式來節省功耗。使用者需要根據最低電源消耗 最快速啟動時間和可用的喚醒源等條件,選定乙個最佳的低功耗模式。stm32提供了3種...

STM32CubeMX系列 ADC模數轉換

1.adc簡介 adc analog to digital converter 即模數轉換器,它可以將模擬量訊號轉換為數碼訊號,按照轉換原理主要分為逐次逼近型 雙積分型 電壓頻率轉換型三種。stm32f1的adc是12位逐次逼近型的模數轉換器,它有18個通道,可測量16個外部和2個內部訊號源。各通道...

用STM32CubeMX建立FreeRTOS專案

1.目標,pg13,pg14雙線程雙閃燈。2.測試平台 stm32f429i disco keil v5.13.0.0 cubemx 4.8.0 3.步驟 3.1 開啟cube,pg13,13設為輸出,rcc選外部晶振,點選freertos 3.2 時鐘配置介面 enable css,配置成系統主頻...