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

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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

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

單片機(jī)RAM真的像你想的那么“單純”嗎

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

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

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

在看下面的圖之前,我們說一個前提,在STM32單片機(jī)這個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ù)是求取這個結(jié)構(gòu)體變量Test所占內(nèi)存的大小,并返回給Size。

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

圖1

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

圖2

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

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

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

圖3

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

圖4

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

圖5

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

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

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

圖6

責(zé)任編輯:haq

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

    關(guān)注

    6043

    文章

    44617

    瀏覽量

    637997
  • RAM
    RAM
    +關(guān)注

    關(guān)注

    8

    文章

    1369

    瀏覽量

    114933
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4823

    瀏覽量

    68955

原文標(biāo)題:別再說你的單片機(jī)RAM不夠用了,來看看這個吧...

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

收藏 人收藏

    評論

    相關(guān)推薦

    單片機(jī)怎么寫入程序

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

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

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

    單片機(jī)的中斷機(jī)制

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

    十天學(xué)會單片機(jī)可能嗎?單片機(jī)入門需要多久?

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

    單片機(jī)燒錄程序的線比單片機(jī)上的少還能燒錄嗎

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

    單片機(jī)燒錄程序的基本步驟是什么

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

    什么是虛擬機(jī)?虛擬機(jī)真的那么好用嗎?

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

    電器設(shè)備為何普遍采用單片機(jī)

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

    數(shù)字電路仿真軟件單片機(jī)怎么用

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

    單片機(jī)開發(fā)好學(xué)嗎?學(xué)習(xí)中有哪些樂趣與挑戰(zhàn)?

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

    如何系統(tǒng)、科學(xué)地自學(xué)單片機(jī)

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

    單片機(jī)是什么?單片機(jī)編程如何入門?

    單片機(jī)其實(shí)是一種很早的叫法了,最開始我們的前輩叫單板機(jī)或者叫單片機(jī),因?yàn)槟莻€時候單片機(jī)的處理能力還沒有很強(qiáng),現(xiàn)在我們所用的基本都是微型處理單元,也叫為控制器也稱之為MCU
    的頭像 發(fā)表于 03-28 08:03 ?2163次閱讀
    <b class='flag-5'>單片機(jī)</b>是什么?<b class='flag-5'>單片機(jī)</b>編程如何入門?

    什么是單片機(jī)及其特性與應(yīng)用領(lǐng)域

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

    單片機(jī)的最小系統(tǒng)由什么組成 單片機(jī)的最小系統(tǒng)包括哪些

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

    單片機(jī)RAM不夠用怎么解決?

    來自一位用戶的咨詢,麻煩幫忙解答。越詳細(xì)越好,有圖有真相。如有相關(guān)的視頻、文檔也可以輔助說明,謝謝。 單片機(jī)RAM不夠用怎么辦? 單片機(jī)都有RAM,如果我們一下子定義了一大堆的變量,使
    發(fā)表于 02-02 07:35
    主站蜘蛛池模板: 亚洲中字慕日产2020 | 国产99视频精品一区 | 国产欧美日韩国产高清 | 日本粉嫩学生毛绒绒 | 暖暖日本免费播放 | 羞羞漫画视频 | 波多野结衣二区 | 久久久免费观看 | 色久久综合视频本道88 | 国产婷婷午夜无码A片 | 被窝国产理论一二三影院 | 粗暴玩烂货调教 | 粉嫩无套白浆第一次jk | 久久性生大片免费观看性 | 无码乱人伦一区二区亚洲一 | 快播dvd吧 | 国产亚洲精品久久孕妇呦呦你懂 | 久久日韩精品无码一区 | 驯服有夫之妇HD中字日本 | 午夜精品久久久久久99热蜜桃 | 女人18毛片 | 国产精品免费一区二区三区视频 | 岛国大片在线播放高清 | 欧美特黄三级成人 | 差差差差差差差差免费观看 | 97成人精品视频在线播放 | 亚洲AV蜜桃永久无码精品无码网 | 亚洲AV 中文字幕 国产 欧美 | 中文字幕亚洲视频 | 久久精品视频uu | 亚洲精品自在线拍2019 | 国产三级精品三级男人的天堂 | 茎身铃口调教 | 欧美另类videosbest | 国产色情短视频在线网站 | 国产69精品久久久熟女 | 草莓视频cm.888tw | 亚洲欧美国产双大乳头 | sao虎影院桃红视频在线观看 | qvod 电影| 美女张开腿让男人桶爽无弹窗 |