色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

    關注

    6037

    文章

    44566

    瀏覽量

    636025
  • RAM
    RAM
    +關注

    關注

    8

    文章

    1369

    瀏覽量

    114757
  • 代碼
    +關注

    關注

    30

    文章

    4793

    瀏覽量

    68701

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

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

收藏 人收藏

    評論

    相關推薦

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

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

    單片機的中斷機制

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

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

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

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

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

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

    計算等多個領域。即使目前你還不了解它的應用,你應該也聽過虛擬的大名。那么虛擬到底是什么?虛擬真的
    的頭像 發表于 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>好用嗎?

    電器設備為何普遍采用單片機

    單芯片單片機是指:將CPU,ROM,RAM,振蕩電路,定時器和串行I/F等集成于一個LSI的微處理器。單芯片單片機的基礎上再配置一些系統的主要外圍電路,而形成的大規模集成電路稱為系統LSI。
    發表于 04-28 15:11 ?457次閱讀
    電器設備為何普遍采用<b class='flag-5'>單片機</b>?

    數字電路仿真軟件單片機怎么用

    數字電路仿真軟件是一種用于模擬和測試數字電路設計的工具。其中,單片機仿真軟件是一種專門針對單片機進行仿真的工具。這種軟件能夠提供一個類似真實硬件環境的仿真平臺,讓用戶在計算機上進行單片機
    的頭像 發表于 04-21 10:28 ?1090次閱讀

    單片機開發好學嗎?學習中有哪些樂趣與挑戰?

    一提到單片機學習大家都會覺得難學,事實真的是這樣嗎?今天就來探討一些單片機學習的那點事兒。對于許多初學者來說,剛開始接觸單片機編程可能會感到有些挑戰,但同時也充滿了樂趣和探索的機會。讓
    的頭像 發表于 03-28 08:04 ?2006次閱讀
    <b class='flag-5'>單片機</b>開發好學嗎?學習中有哪些樂趣與挑戰?

    如何系統、科學地自學單片機

    很多初學者都會面臨這個問題,我想學習單片機、我也想學好單片機、我也想系統地學習單片機,但是單片機涉及到的學科多且雜根本不是三天兩天就能學完的,很多人都逃脫不了從入門到放棄的怪圈?
    的頭像 發表于 03-28 08:03 ?1101次閱讀
    如何系統、科學地自學<b class='flag-5'>單片機</b>?

    單片機是什么?單片機編程如何入門?

    單片機其實是一種很早的叫法了,最開始我們的前輩叫單板機或者叫單片機,因為那個時候單片機的處理能力還沒有很強,現在我們所用的基本都是微型處理單元,也叫為控制器也稱之為MCU
    的頭像 發表于 03-28 08:03 ?1957次閱讀
    <b class='flag-5'>單片機</b>是什么?<b class='flag-5'>單片機</b>編程如何入門?

    什么是單片機及其特性與應用領域

    單片機除具有計算機基本邏輯與數據處理功能之外,還自帶RAM、ROM、I/O口以及定時器等外設,并由芯片制造商提供完備的軟件和硬件開發工具及文檔支持,極大地方便了工程師們的開發工作。此外,單片機在實時光運行過程中,能夠通過程序改變
    發表于 02-15 15:04 ?623次閱讀

    單片機的最小系統由什么組成 單片機的最小系統包括哪些

    單片機(Microcontroller Unit,MCU)的最小系統包括以下幾個主要組成部分: 單片機芯片:單片機是整個最小系統的核心部分,它集成了中央處理器(Central Processing
    的頭像 發表于 02-02 11:27 ?1.1w次閱讀

    單片機RAM不夠用怎么解決?

    來自一位用戶的咨詢,麻煩幫忙解答。越詳細越好,有圖有真相。如有相關的視頻、文檔也可以輔助說明,謝謝。 單片機RAM不夠用怎么辦? 單片機都有RAM,如果我們一下子定義了一大堆的變量,使
    發表于 02-02 07:35

    什么是單片機? 單片機由哪幾個主要部分組成?

    )、存儲器(ROM、RAM)、輸入輸出(I/O)接口等功能的微型計算機系統。相比于傳統的多芯片電路設計,單片機具有體積小、成本低、功耗低等優勢,因而在許多領域被廣泛使用。 二、單片機的主要組成部分 中央處理器(CPU) 中央處理
    的頭像 發表于 01-22 10:38 ?9531次閱讀

    單片機原理及應用有哪些

    單片機(Microcontroller)是一種集成電路芯片,具備中央處理器(CPU)、存儲器(RAM和ROM)、輸入/輸出(I/O)接口及定時/計數器等功能模塊。它是嵌入式系統的核心組成部分,被
    的頭像 發表于 01-15 16:25 ?2006次閱讀
    主站蜘蛛池模板: 欧美 日韩 无码 有码 在线| 三级网址在线观看| 国产在线精品亚洲另类| 国产午夜人做人免费视频中文| 国产午夜精品视频在线播放| 国产一区在线观看免费| 极品美女穴| 久久亚洲免费视频| 男女免费观看在线爽爽爽视频 | 亚洲免费人成 久久| 一边捏奶头一边啪高潮会怎么样| 中国老太60old mantv| 99亚洲精品色情无码久久| 成人毛片免费在线观看| 国产麻豆剧看黄在线观看| 精品免费视在线视频观看| 免费国产精品视频| 涩涩视频www在线观看入口| 亚洲精品无码专区在线播放| 24小时日本高清免费看| 白丝萝莉喷水| 国内精品久久影视免费| 乱奷XXXXXHD| 色在线视频亚洲欧美| 亚洲性无码av在线| jlzzzjizzzjlzzz亚洲| 国产人妻午夜无码AV天堂| 久久综合亚洲色hezyo| 日韩精品卡1卡2三卡四卡乱码 | 久久婷婷丁香五月色综合啪免费| 欧美多毛的大隂道| 无套内射纹身女视频| 影音先锋 av天堂| 成年免费大片黄在线观看岛国| 国内精品乱码卡一卡2卡三卡新区| 免费人成网站永久| 午夜噜噜噜私人影院在线播放| 在野外被男人躁了一夜动图| 大香伊人久久| 久久免费看少妇高潮A片2012| 琪琪电影午夜理论片77网|