一、簡述
其實在51單片機中也可以使用動態內存,動態內存其實就是劃出一塊內存區域,將這塊內存進行管理,稱為內存管理。51單片機可以使用c語言自帶的標準內存管理API:malloc、calloc、realloc、free。他們的頭文件在中,所以使用內存管理必須包含該頭文件。
二、使用方法
51單片機需要使用內存管理API必須要手動調用初始化堆內存管理函數:init_mempool
ARM32單片機在MDK5開發環境中,由“__main”函數進行堆內存管理初始化,__main函數執行完之后才會執行main函數(這里不細講),所以開發32單片機可直接使用內存管理API進行內存申請和釋放。
init_mempool函數說明在keil安裝目錄下的“C51\Hlp\c51.chm”,在索引“Library Reference/Library Files/Source Code”下,如下圖:
- 函數原型講解
- p:表示用來做動態內存區域的首地址
- size:表示動態內存區域的大小,單位byte
- 函數使用
- 建議51單片機動態內存區域的范圍使用xdata區域,因為片內RAM只有256字節可用,所以chm手冊給的示例代碼也是使用的xdata區域。
- init_mempool函數建議在main函數開始進行初始化。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
API
+關注
關注
2文章
1499瀏覽量
61961 -
51單片機
+關注
關注
274文章
5702瀏覽量
123490 -
動態內存
+關注
關注
1文章
24瀏覽量
7974
發布評論請先 登錄
相關推薦
動態內存管理模塊的設計原理與實現
Fense 通過設立一個雙向鏈表(struct Head *stHead)來保存所有被分配的動態內存塊的信息。鏈表中的每個節點對應一個動態內存塊,節點中包括此內存大小、
內存的動態內存分配實現
第27章 STM32H7的TCM,SRAM等五塊內存的動態內存分配實現本章教程為大家分享一種DTCM,SRAM1,SRAM2,SRAM3和SRAM4可以獨立管理的動態內存管理方案,在實
發表于 08-03 07:14
請問使用動態內存分配安全嗎?
想在C語言程序員之間開始一個激烈的,或者說有爭議的討論很簡單,只需要問:“使用動態內存分配安全嗎?”使用動態內存分配安全嗎?在C語言程序開發中,動態
發表于 12-15 06:10
使用動態內存分配安全嗎
[導讀]想在C語言程序員之間開始一個激烈的,或者說有爭議的討論很簡單,只需要問:“使用動態內存分配安全嗎?”想在C語言程序員之間開始一個激烈的,或者說有爭議的討論很簡單,只需要問:“使用動態內存
發表于 12-15 07:44
RTThread的動態內存空間該如何去分配呢
關于rtt的動態內存空間分配,想問一下以下我的幾點理解是對的嗎1、我看RTT NANO和MASTER版本的動態內存分配好像不太一樣,我的理解是MASTER版本的
發表于 08-31 14:34
單片機系統進行動態內存分配和任務調度思想的資料和代碼實例說明
內存分配設計思想:我們設置動態內存分配的初衷在于:有些單片機系統內存資源比較少,便顯得特別珍貴,
發表于 09-30 17:13
?4次下載
關于stm32 MCU申請動態內存malloc的認識
首先,malloc( )屬于標準C語言函數,當然可以在單片機上使用,如STM32可以先在啟動文件中設置heap的大小,再使用動態內存分配: Heap_Size EQU 0x00000200 \\也就
發表于 11-18 16:21
?14次下載
評論