99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

3天內不再提示

單片機RAM真的像你想的那么“單純”嗎

GReq_mcu168 ? 來源:單片機匠人 ? 作者:蔡琰老師 ? 2021-11-19 09:47 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

當我們寫代碼的時候,會用到很多變量,如果隨意的定義變量,比如寫了N多個“unsigned char/int X;”那么代碼可能會顯的很亂,自己拐回頭看的時候都暈掉了,那么這個時候我們可以構造一個復雜的數(shù)據(jù)類型-結構體類型,對代碼中出現(xiàn)的變量進行類別的劃分,用構造的結構體類型定義結構體變量,在寫or看代碼的時候,只要看到這個結構體,就能大致的知道其實現(xiàn)功能,這樣看起來就神清氣爽了,可讀性大大提高。

我們定義的結構體變量,如果沒有特殊規(guī)定的話是存儲在RAM中的,單片機的RAM資源是有限的,那這個結構體變量在RAM中占的空間大小就是我們需要關注一個問題了,它真的像你想的那么“單純”嗎?接下來我們一起來看看吧!

在看下面的圖之前,我們說一個前提,在STM32單片機這個32位系統(tǒng)中,signed/unsigned int 占4個字節(jié),signed/unsigned short int 占2個字節(jié) signed/unsigned char 占1個字節(jié),我們稱這些為基本數(shù)據(jù)類型。Size = Sizeof(Test);這個函數(shù)是求取這個結構體變量Test所占內存的大小,并返回給Size。

5b924e68-43ac-11ec-b939-dac502259ad0.jpg

圖1

5be2b010-43ac-11ec-b939-dac502259ad0.jpg

圖2

請看上圖,我們使用基本數(shù)據(jù)類型構造了3個復雜的結構體數(shù)據(jù)類型,仔細看會發(fā)現(xiàn),這3個數(shù)據(jù)類型的成員可是不大一樣的,我們來看第一個Test,這個數(shù)據(jù)類型總共占4+4=8個字節(jié),這個很好理解,那第二個Test1,占空間大小按道理來說應該是1+4 = 5個字節(jié),但是為什么還是8呢,第三個Test2,占空間大小應該是1+1+4=8,為什么還是8呢?

這個里面就涉及到了結構體對齊,所有的成員在分配內存時都要與所有成員中占內存最多的基本數(shù)據(jù)類型所占內存空間的字節(jié)數(shù)對齊。假如這個字節(jié)數(shù)為N,那么對齊的原則是:理論上所有成員在分配內存時都是緊接在前一個變量后面依次填充的,但是如果是“以 N 對齊”為原則,那么,如果一行中剩下的空間不足以填充某成員變量時,即剩下的空間小于某成員變量的數(shù)據(jù)類型所占的字節(jié)數(shù),該成員變量在分配內存時另起一行分配。如圖3,4:

5c8ed048-43ac-11ec-b939-dac502259ad0.jpg

圖3

5cde1ff4-43ac-11ec-b939-dac502259ad0.jpg

圖4

5d1a041a-43ac-11ec-b939-dac502259ad0.jpg

圖5

通過上面的實際測試,我們得出,在構造結構體復雜數(shù)據(jù)類型的時候,成員變量的排放一定要注意順序,遵守排放原則,否則就會白白浪費你的空間,掌握好排放原理,能大大提高你的空間利用率。比如我們構造如圖5的結構體類型,它依然還是占8個字節(jié)。

文末再給大家出個問題,大家看看下面我們構造的數(shù)據(jù)類型,它們分別占的空間是多大呢?

5df404da-43ac-11ec-b939-dac502259ad0.jpg

圖6

責任編輯:haq

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

    關注

    6067

    文章

    44992

    瀏覽量

    650580
  • RAM
    RAM
    +關注

    關注

    8

    文章

    1392

    瀏覽量

    117557
  • 代碼
    +關注

    關注

    30

    文章

    4900

    瀏覽量

    70758

原文標題:別再說你的單片機RAM不夠用了,來看看這個吧...

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    KF32A136系列單片機產(chǎn)品介紹

    F32A136 系列單片機是基于 KF32 內核架構開發(fā)的單片機。
    的頭像 發(fā)表于 06-27 11:42 ?535次閱讀
    KF32A136系列<b class='flag-5'>單片機</b>產(chǎn)品介紹

    單片機科普總結,建議收藏!

    單片機(MicrocontrollerUnit,MCU)作為嵌入式系統(tǒng)的核心之一,在現(xiàn)代電子產(chǎn)品中無處不在。從智能家居、汽車電子,到工業(yè)控制、醫(yī)療設備,單片機支撐著無數(shù)智能化應用的發(fā)展。對于初學者
    的頭像 發(fā)表于 04-07 11:58 ?2089次閱讀
    <b class='flag-5'>單片機</b>科普總結,建議收藏!

    51單片機pwm和spwm

    51單片機pwm
    發(fā)表于 01-08 15:54 ?3次下載

    單片機Debug工具性能對比 單片機調試常用命令

    單片機(Microcontroller Unit, MCU)調試是嵌入式開發(fā)中的一個重要環(huán)節(jié),它幫助開發(fā)者發(fā)現(xiàn)和修復代碼中的錯誤,優(yōu)化程序性能。不同的單片機和開發(fā)環(huán)境可能使用不同的調試工具和命令
    的頭像 發(fā)表于 12-19 09:56 ?1422次閱讀

    如何優(yōu)化單片機項目的功耗

    在現(xiàn)代電子設計中,功耗優(yōu)化已成為一個不可忽視的重要議題。對于單片機(MCU)項目而言,功耗不僅關系到產(chǎn)品的能效比,還直接影響到電池壽命和熱管理。 硬件層面的功耗優(yōu)化 1. 選擇合適的單片機 選擇一個
    的頭像 發(fā)表于 11-01 14:16 ?1297次閱讀

    單片機編程語言有哪些選擇

    單片機(Microcontroller Unit,MCU)編程是指為單片機編寫程序的過程,這些程序控制單片機的行為和功能。單片機廣泛應用于嵌入式系統(tǒng),如家用電器、汽車電子、工業(yè)控制等領
    的頭像 發(fā)表于 11-01 14:13 ?2431次閱讀

    單片機怎么寫入程序

    單片機(Microcontroller Unit,MCU)是一種集成電路芯片,它將計算機的CPU、存儲器、輸入/輸出接口等功能集成在一個芯片上。單片機廣泛應用于嵌入式系統(tǒng)和物聯(lián)網(wǎng)設備中。編寫單片機
    的頭像 發(fā)表于 10-21 11:21 ?2445次閱讀

    51單片機的主要邏輯功能部件是什么

    部件的操作。它包括算術邏輯單元(ALU),用于執(zhí)行算術和邏輯運算。 2. 存儲器 程序存儲器(ROM):用于存儲程序代碼,通常是不可更改的內存,如EPROM或閃存。 數(shù)據(jù)存儲器(RAM):用于存儲運行時數(shù)據(jù),比如變量和臨時數(shù)據(jù)。51單片機的內置
    的頭像 發(fā)表于 10-18 12:49 ?1151次閱讀

    單片機的中斷機制

    單片機的中斷機制是一種重要的處理方式,它允許單片機在執(zhí)行主程序的過程中,能夠暫停當前任務,轉而處理外部或內部緊急事件。這種機制極大地提高了系統(tǒng)的響應速度和處理能力,使得單片機在各種應用領域中得到廣泛應用。以下是對
    的頭像 發(fā)表于 10-17 18:03 ?1981次閱讀

    十天學會單片機可能嗎?單片機入門需要多久?

    一下,單片機的入門其實并沒有想象中那么難。對于那些有一定編程基礎,尤其是有C語言基礎的學習者來說,入門的過程可能僅需幾天。例如,有人可能在三天內就掌握了單片機的基礎
    的頭像 發(fā)表于 09-05 08:00 ?2476次閱讀
    十天學會<b class='flag-5'>單片機</b>可能嗎?<b class='flag-5'>單片機</b>入門需要多久?

    單片機燒錄程序用什么軟件

    單片機燒錄程序是單片機開發(fā)過程中的一個重要環(huán)節(jié),涉及到將編寫好的程序代碼通過燒錄器寫入單片機的ROM中,以實現(xiàn)對單片機的控制。 燒錄器的類型 燒錄器是用于將程序代碼寫入
    的頭像 發(fā)表于 09-02 10:05 ?3451次閱讀

    單片機燒錄程序的線比單片機上的少還能燒錄嗎

    的存儲器通常分為兩類:ROM(只讀存儲器)和RAM(隨機存取存儲器)。ROM用于存儲程序代碼,而RAM用于存儲程序運行過程中的數(shù)據(jù)。燒錄過程就是將程序代碼寫入ROM中。 單片機燒錄方法 單片機
    的頭像 發(fā)表于 09-02 09:54 ?1092次閱讀

    單片機燒錄程序的基本步驟是什么

    單片機燒錄程序是單片機開發(fā)過程中非常重要的一步,它涉及到將編寫好的程序代碼通過一定的方式傳輸?shù)?b class='flag-5'>單片機內部的存儲器中,使單片機能夠按照預定的邏輯執(zhí)行任務。 一、硬件準備
    的頭像 發(fā)表于 09-02 09:47 ?2774次閱讀

    單片機引腳懸空是什么電平

    單片機引腳懸空是指單片機的I/O引腳在沒有連接任何外部電路的情況下,引腳的電平狀態(tài)。懸空引腳的電平狀態(tài)取決于單片機的內部結構和外部環(huán)境因素。 單片機引腳懸空的電平狀態(tài)
    的頭像 發(fā)表于 08-28 09:51 ?4854次閱讀

    國產(chǎn)單片機(MCU)崛起 —— 51系列

    一、51系列單片機的命名由來51系列單片機的命名由來與它的設計和開發(fā)歷史相關。這個系列的單片機主要由Intel的8051微控制器發(fā)展而來,后來被多個公司采用和改進,形成了一個廣泛使用的微控制器平臺
    的頭像 發(fā)表于 08-14 08:39 ?7566次閱讀
    國產(chǎn)<b class='flag-5'>單片機</b>(MCU)崛起 —— 51系列