女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

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

GReq_mcu168 ? 來源:單片機匠人 ? 作者:蔡琰老師 ? 2021-11-19 09:47 ? 次閱讀

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

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

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

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

圖1

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

圖2

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

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

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

圖3

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

圖4

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

圖5

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

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

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

圖6

責任編輯:haq

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

    關注

    6063

    文章

    44925

    瀏覽量

    647088
  • RAM
    RAM
    +關注

    關注

    8

    文章

    1391

    瀏覽量

    116816
  • 代碼
    +關注

    關注

    30

    文章

    4887

    瀏覽量

    70266

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

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

收藏 人收藏

    評論

    相關推薦
    熱點推薦

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

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

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

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

    如何優化單片機項目的功耗

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

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

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

    單片機怎么寫入程序

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

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

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

    單片機的中斷機制

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

    單片機出現故障怎么維修

    單片機出現故障時,維修過程需要系統地檢查和診斷,以確定故障的根本原因,并采取相應的修復措施。以下是一個詳細的單片機維修指南,旨在幫助技術人員或愛好者有效地解決單片機故障問題。
    的頭像 發表于 10-17 17:57 ?3420次閱讀

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

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

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

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

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

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

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

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

    一文讀懂什么單片機:組成結構與應用

    歡迎來到單片機的世界,這是一種微小(但功能強大)的設備,改變了嵌入式系統的面貌。在本文中,您將了解單片機的一些基本知識、單片機的結構以及微處理器與單片機之間的一些區別。在深入
    的頭像 發表于 08-09 11:49 ?2245次閱讀
    一文讀懂什么<b class='flag-5'>單片機</b>:組成結構與應用

    什么是虛擬?虛擬真的那么好用嗎?

    計算等多個領域。即使目前你還不了解它的應用,你應該也聽過虛擬的大名。那么虛擬到底是什么?虛擬真的
    的頭像 發表于 07-06 08:05 ?463次閱讀
    什么是虛擬<b class='flag-5'>機</b>?虛擬<b class='flag-5'>機</b><b class='flag-5'>真的</b><b class='flag-5'>那么</b>好用嗎?

    UCGUI單片機源碼

    UCGUI單片機源碼
    發表于 07-04 17:11 ?1次下載