0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

你知道嗎? 51單片機也有動態(tài)內(nèi)存分配

朱老師物聯(lián)網(wǎng)大講堂 ? 2024-04-26 08:10 ? 次閱讀

一、簡述

其實在51單片機中也可以使用動態(tài)內(nèi)存,動態(tài)內(nèi)存其實就是劃出一塊內(nèi)存區(qū)域,將這塊內(nèi)存進行管理,稱為內(nèi)存管理。51單片機可以使用c語言自帶的標準內(nèi)存管理API:malloc、calloc、realloc、free。他們的頭文件在中,所以使用內(nèi)存管理必須包含該頭文件。

二、使用方法

51單片機需要使用內(nèi)存管理API必須要手動調(diào)用初始化堆內(nèi)存管理函數(shù):init_mempool

ARM32單片機在MDK5開發(fā)環(huán)境中,由“__main”函數(shù)進行堆內(nèi)存管理初始化,__main函數(shù)執(zhí)行完之后才會執(zhí)行main函數(shù)(這里不細講),所以開發(fā)32單片機可直接使用內(nèi)存管理API進行內(nèi)存申請和釋放。

init_mempool函數(shù)說明在keil安裝目錄下的“C51\Hlp\c51.chm”,在索引“Library Reference/Library Files/Source Code”下,如下圖:

68f0680c-0361-11ef-9118-92fbcf53809c.png

  • 函數(shù)原型講解
  • p:表示用來做動態(tài)內(nèi)存區(qū)域的首地址
  • size:表示動態(tài)內(nèi)存區(qū)域的大小,單位byte

6913784c-0361-11ef-9118-92fbcf53809c.png

  • 函數(shù)使用
  • 建議51單片機動態(tài)內(nèi)存區(qū)域的范圍使用xdata區(qū)域,因為片內(nèi)RAM只有256字節(jié)可用,所以chm手冊給的示例代碼也是使用的xdata區(qū)域。
  • init_mempool函數(shù)建議在main函數(shù)開始進行初始化。

692746d8-0361-11ef-9118-92fbcf53809c.png

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • API
    API
    +關注

    關注

    2

    文章

    1472

    瀏覽量

    61749
  • 51單片機
    +關注

    關注

    273

    文章

    5697

    瀏覽量

    122991
  • 動態(tài)內(nèi)存

    關注

    1

    文章

    24

    瀏覽量

    7959
收藏 人收藏

    評論

    相關推薦

    動態(tài)內(nèi)存管理模塊的設計原理與實現(xiàn)

    Fense 通過設立一個雙向鏈表(struct Head *stHead)來保存所有被分配動態(tài)內(nèi)存塊的信息。鏈表中的每個節(jié)點對應一個動態(tài)內(nèi)存塊,節(jié)點中包括此內(nèi)存大小、
    的頭像 發(fā)表于 06-30 08:05 ?2317次閱讀
    <b class='flag-5'>動態(tài)內(nèi)存</b>管理模塊的設計原理與實現(xiàn)

    C語言知識總結:動態(tài)內(nèi)存分配

    動態(tài)內(nèi)存分配就 是指在程序執(zhí)行的過程中動態(tài)分配或者回收存儲空間的分配內(nèi)存的方法。
    發(fā)表于 10-24 15:52 ?830次閱讀

    詳解單片機內(nèi)存分配

    對于初學者而言,對單片機內(nèi)存分配往往最讓人頭疼,很多人學了單片機幾年 都不知道單片機內(nèi)部的
    發(fā)表于 11-07 10:42 ?2250次閱讀

    C語言程序設計中動態(tài)內(nèi)存分配如何實現(xiàn)

    C語言程序設計中,動態(tài)內(nèi)存分配如何實現(xiàn),需要注意哪些問題?
    發(fā)表于 09-28 16:53 ?1261次閱讀

    內(nèi)存動態(tài)內(nèi)存分配實現(xiàn)

    第27章 STM32H7的TCM,SRAM等五塊內(nèi)存動態(tài)內(nèi)存分配實現(xiàn)本章教程為大家分享一種DTCM,SRAM1,SRAM2,SRAM3和SRAM4可以獨立管理的動態(tài)內(nèi)存管理方案,在實
    發(fā)表于 08-03 07:14

    如何在單片機上也可正常使用動態(tài)內(nèi)存分配

    51單片機內(nèi)存動態(tài)分配序言最近玩51單片機碰到一個問題,51中malloc函數(shù)并不能像在PC上一
    發(fā)表于 11-19 07:36

    請問使用動態(tài)內(nèi)存分配安全嗎?

    想在C語言程序員之間開始一個激烈的,或者說有爭議的討論很簡單,只需要問:“使用動態(tài)內(nèi)存分配安全嗎?”使用動態(tài)內(nèi)存分配安全嗎?在C語言程序開發(fā)中,動態(tài)
    發(fā)表于 12-15 06:10

    使用動態(tài)內(nèi)存分配安全嗎

    [導讀]想在C語言程序員之間開始一個激烈的,或者說有爭議的討論很簡單,只需要問:“使用動態(tài)內(nèi)存分配安全嗎?”想在C語言程序員之間開始一個激烈的,或者說有爭議的討論很簡單,只需要問:“使用動態(tài)內(nèi)存
    發(fā)表于 12-15 07:44

    動態(tài)內(nèi)存分配是什么意思

    所謂動態(tài)內(nèi)存分配(Dynamic Memory Allocation)就是指在程序執(zhí)行的過程中動態(tài)分配或者回收存儲空間的分配
    發(fā)表于 12-17 08:17

    RTThread的動態(tài)內(nèi)存空間該如何去分配

    關于rtt的動態(tài)內(nèi)存空間分配,想問一下以下我的幾點理解是對的嗎1、我看RTT NANO和MASTER版本的動態(tài)內(nèi)存分配好像不太一樣,我的理解是MASTER版本的
    發(fā)表于 08-31 14:34

    51單片機能實現(xiàn)動態(tài)內(nèi)存管理嗎?

    怎么用51單片機實現(xiàn)動態(tài)內(nèi)存管理
    發(fā)表于 10-15 12:43

    單片機系統(tǒng)進行動態(tài)內(nèi)存分配和任務調(diào)度思想的資料和代碼實例說明

    內(nèi)存分配設計思想:我們設置動態(tài)內(nèi)存分配的初衷在于:有些單片機系統(tǒng)內(nèi)存資源比較少,便顯得特別珍貴,
    發(fā)表于 09-30 17:13 ?4次下載
    <b class='flag-5'>單片機</b>系統(tǒng)進行<b class='flag-5'>動態(tài)內(nèi)存</b><b class='flag-5'>分配</b>和任務調(diào)度思想的資料和代碼實例說明

    51單片機如何使用動態(tài)內(nèi)存

    本文檔的主要內(nèi)容詳細介紹的是51單片機如何使用動態(tài)內(nèi)存的詳細資料免費下載。
    發(fā)表于 06-14 17:44 ?0次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b>如何使用<b class='flag-5'>動態(tài)內(nèi)存</b>

    51單片機內(nèi)存動態(tài)分配

    51單片機內(nèi)存動態(tài)分配序言最近玩51單片機碰到一個問題,51中malloc函數(shù)并不能像在PC上一
    發(fā)表于 11-12 14:36 ?11次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機內(nèi)存</b><b class='flag-5'>動態(tài)分配</b>

    關于stm32 MCU申請動態(tài)內(nèi)存malloc的認識

    首先,malloc( )屬于標準C語言函數(shù),當然可以在單片機上使用,如STM32可以先在啟動文件中設置heap的大小,再使用動態(tài)內(nèi)存分配: Heap_Size EQU 0x00000200 \\也就
    發(fā)表于 11-18 16:21 ?14次下載
    關于stm32 MCU申請<b class='flag-5'>動態(tài)內(nèi)存</b>malloc的認識