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

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

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

一文詳細(xì)了解單片機(jī)的大小端模式

GReq_mcu168 ? 來源:玩轉(zhuǎn)單片機(jī)與嵌入式 ? 作者:玩轉(zhuǎn)單片機(jī)與嵌入 ? 2022-02-16 17:44 ? 次閱讀

一:什么是大小端?

咱們中文中常常提到的大小端的英文名字為“endianness”,英文直譯的意思是“字節(jié)序”,是內(nèi)存中存儲(chǔ)數(shù)據(jù)的字節(jié)順序。在這里一定要記住是“字節(jié)的順序”,應(yīng)為在計(jì)算機(jī)系統(tǒng)中,都是以字節(jié)為單位的,每個(gè)地址單元都對應(yīng)一個(gè)字節(jié),即8bit。

C語言系統(tǒng)中,除了8bit的char類型,還有16bit的short類型、32bit的long類型。對于超過8bit的數(shù)據(jù)的存儲(chǔ),必然存在存在如何將多個(gè)字節(jié)排序的問題,因此就導(dǎo)致了大端存儲(chǔ)模式和小端存儲(chǔ)模式。

如果系統(tǒng)是大端,則首先存儲(chǔ) MSB 字節(jié),即高字節(jié)存儲(chǔ)在低地址;若系統(tǒng)是小端,則首先存儲(chǔ)LSB字節(jié),即低字節(jié)存儲(chǔ)在低地址。

針對這兩種模式,我常用的記憶宮殿方法是:“小弟弟”,即小端系統(tǒng)的低字節(jié)存儲(chǔ)到低地址,大端則反之。

二:詳解大小端模式

假設(shè),需要存儲(chǔ)的32bit的數(shù)據(jù)為:0x11223344。

一文詳細(xì)了解單片機(jī)的大小端模式

對于大端模式:低位地址存儲(chǔ)著高字節(jié)的數(shù)據(jù)。

一文詳細(xì)了解單片機(jī)的大小端模式

對于小端系統(tǒng):低位地址存儲(chǔ)著低字節(jié)的數(shù)據(jù)。

一文詳細(xì)了解單片機(jī)的大小端模式

在一些MCU中,可以通過軟件將一種字節(jié)序切換為另一種字節(jié)序,即可以通過軟件配置的形式選擇大端模式還是小端模式。

如筆者使用過的一款瑞薩單片機(jī)支持字節(jié)序選擇。

一文詳細(xì)了解單片機(jī)的大小端模式

三:如何判斷單片機(jī)的大小端模式?

若想要知道自己使用的單片機(jī)是大端或小端模式,可以通過下方的代碼進(jìn)行判斷。

//檢查大小端模式,大端模式返回true;小端模式返回falsebool CheckisBigEndian(void){    uint32_t u32RawData;    uint8_t *pu8CheckData;    u32RawData = 0x11223344; //Assign data    pu8CheckData = (uint8_t *)&u32RawData; //Type cast    if (*pu8CheckData == 0x44) //check the value of lower address    {        return false;    }    else if (*pu8CheckData == 0x11) //check the value of lower address    {        return true;}}

四:大端模式與小端模式怎么轉(zhuǎn)換?

我們可以使用 下面的算法將大端模式轉(zhuǎn)換為小端模式,反之亦然。

//Function to change one endian to anotheruint32_t ChangeEndianness(uint32_t u32Value){    uint32_t u32Result = 0;    u32Result |= (u32Value & 0x000000FF) << 24;    u32Result |= (u32Value & 0x0000FF00) << 8;    u32Result |= (u32Value & 0x00FF0000) >> 8;    u32Result |= (u32Value & 0xFF000000) >> 24;    return u32Result;}

五:STM32是大端還是小端模式?

從下圖中關(guān)于STM32的手冊介紹中可發(fā)現(xiàn):我們常用的STM32單片機(jī)符合“小弟弟”的存儲(chǔ)邏輯,屬于小端系統(tǒng);

一文詳細(xì)了解單片機(jī)的大小端模式

原文標(biāo)題:超全面講解單片機(jī)的大小端模式

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

審核編輯:湯梓紅


聲明:本文內(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)注

    6030

    文章

    44491

    瀏覽量

    632014
  • 計(jì)算機(jī)
    +關(guān)注

    關(guān)注

    19

    文章

    7372

    瀏覽量

    87637
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7595

    瀏覽量

    135878

原文標(biāo)題:超全面講解單片機(jī)的大小端模式

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

收藏 人收藏

    評論

    相關(guān)推薦

    如何優(yōu)化單片機(jī)項(xiàng)目的功耗

    功耗低的單片機(jī)是優(yōu)化功耗的第步。不同的單片機(jī)在工作模式下有不同的功耗表現(xiàn),包括活動(dòng)模式、睡眠模式
    的頭像 發(fā)表于 11-01 14:16 ?137次閱讀

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

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

    單片機(jī)io口輸出電流多大

    單片機(jī)IO口的輸出電流大小會(huì)受到多種因素的影響,包括單片機(jī)的型號(hào)、IO口的配置模式以及外部電路的設(shè)計(jì)等。以下是對單片機(jī)IO口輸出電流的
    的頭像 發(fā)表于 09-14 14:29 ?1020次閱讀

    讀懂什么單片機(jī):組成結(jié)構(gòu)與應(yīng)用

    歡迎來到單片機(jī)的世界,這是種微小(但功能強(qiáng)大)的設(shè)備,改變了嵌入式系統(tǒng)的面貌。在本文中,您將了解單片機(jī)些基本知識(shí)、
    的頭像 發(fā)表于 08-09 11:49 ?1581次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b>讀懂什么<b class='flag-5'>單片機(jī)</b>:組成結(jié)構(gòu)與應(yīng)用

    藍(lán)牙模塊如何實(shí)現(xiàn)單片機(jī)和手機(jī)數(shù)據(jù)互傳

    藍(lán)牙模塊實(shí)現(xiàn)單片機(jī)和手機(jī)數(shù)據(jù)互傳的過程可以分為以下幾個(gè)步驟: 硬件準(zhǔn)備 : 確保你有個(gè)支持藍(lán)牙通信的單片機(jī)開發(fā)板,如Arduino、Raspberry Pi等。 準(zhǔn)備
    的頭像 發(fā)表于 07-24 17:59 ?2048次閱讀
    藍(lán)牙模塊如何實(shí)現(xiàn)<b class='flag-5'>單片機(jī)</b>和手機(jī)<b class='flag-5'>端</b>數(shù)據(jù)互傳

    帶你詳細(xì)了解工業(yè)電腦

    扇設(shè)計(jì)、承受振動(dòng)和惡劣環(huán)境的能力、輕松配置、全面的I/O選項(xiàng)、延長生命周期、耐用的組件。了解如何為您的應(yīng)用選擇工業(yè)電腦對提高設(shè)施的生產(chǎn)力和效率至關(guān)重要。詳細(xì)了解
    的頭像 發(fā)表于 06-12 14:24 ?321次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b>帶你<b class='flag-5'>詳細(xì)了解</b>工業(yè)電腦

    單片機(jī)內(nèi)存和程序大小有什么關(guān)系嗎?怎么選用不同內(nèi)存大小單片機(jī)

    單片機(jī)內(nèi)存和程序大小有什么關(guān)系嗎?怎么選用不同內(nèi)存大小單片機(jī)?僅從成本考慮嗎?
    發(fā)表于 05-16 06:03

    ?51單片機(jī)串口通信詳細(xì)介紹-小白必看

    51單片機(jī)串口通信是單片機(jī)與外部設(shè)備通信的重要方式,它基于串行通信的原理,以字節(jié)為單位進(jìn)行數(shù)據(jù)傳輸。在51單片機(jī)中,串口通信主要依賴于兩個(gè)關(guān)鍵寄存器:SBUF寄存器和SCON寄存器。SBUF寄存器用于存儲(chǔ)要發(fā)送或接收的數(shù)據(jù),而S
    的頭像 發(fā)表于 04-17 09:33 ?1808次閱讀
    ?51<b class='flag-5'>單片機(jī)</b>串口通信<b class='flag-5'>詳細(xì)</b>介紹-小白必看

    帶您詳細(xì)了解IEEE802.3bt(PoE++)的有關(guān)特點(diǎn)

    Hqst華強(qiáng)盛(盈盛電子)導(dǎo)讀:帶您詳細(xì)了解IEEE802.3bt(PoE++)的有關(guān)特點(diǎn),讓我們對IEEE802.3bt(PoE++)協(xié)議有更具體的了解
    的頭像 發(fā)表于 01-04 11:26 ?1907次閱讀
    帶您<b class='flag-5'>一</b>起<b class='flag-5'>詳細(xì)了解</b>IEEE802.3bt(PoE++)的有關(guān)特點(diǎn)

    STM32單片機(jī)的特點(diǎn)和功能是什么

    STM32單片機(jī)款基于ARM Cortex-M內(nèi)核的32位閃存微控制器,由STMicroelectronics公司(意法半導(dǎo)體)生產(chǎn)。STM32單片機(jī)具有高性能、低功耗、豐富的外設(shè)和易于開發(fā)
    的頭像 發(fā)表于 01-03 15:33 ?1.2w次閱讀

    單片機(jī)boot腳干嘛的

    多個(gè)方面進(jìn)行闡述。 、定義 boot腳是指單片機(jī)引導(dǎo)腳,也稱為啟動(dòng)腳、引導(dǎo)引腳。它是單片機(jī)系統(tǒng)中的個(gè)引腳,負(fù)責(zé)控制單片機(jī)系統(tǒng)的啟動(dòng)和引導(dǎo)
    的頭像 發(fā)表于 12-19 09:47 ?9147次閱讀

    單片機(jī)按鍵切換模式命令

    單片機(jī)按鍵切換模式命令是指在單片機(jī)系統(tǒng)中,通過按下按鍵來切換系統(tǒng)工作模式的命令。這種命令通常用于控制系統(tǒng)的狀態(tài)和功能,使系統(tǒng)能夠根據(jù)用戶的需求進(jìn)行靈活的切換,提供多種工作
    的頭像 發(fā)表于 12-15 10:31 ?2728次閱讀

    單片機(jī)按鍵切換模式怎么設(shè)置

    單片機(jī)作為種微處理器,在各種嵌入式系統(tǒng)中扮演著核心控制器的角色。其中,按鍵輸入作為單片機(jī)控制中常見的交互方式,實(shí)現(xiàn)模式切換是常見的需求。本文將詳細(xì)
    的頭像 發(fā)表于 12-13 11:07 ?3652次閱讀

    單片機(jī)如何檢測電流?

    單片機(jī)如何檢測電流? 隨著科技的發(fā)展,單片機(jī)技術(shù)在電子設(shè)備中得到了廣泛應(yīng)用。其中,電流檢測是單片機(jī)個(gè)重要功能之。本文將
    的頭像 發(fā)表于 12-07 15:37 ?3573次閱讀

    plc與單片機(jī)的優(yōu)缺點(diǎn) PLC與單片機(jī)系統(tǒng)比較有何優(yōu)勢?

    介紹它們的優(yōu)勢。 首先,讓我們了解下PLC和單片機(jī)的基本概念。PLC是種專為工業(yè)自動(dòng)化控制而設(shè)計(jì)的數(shù)字計(jì)算機(jī),它具有良好的穩(wěn)定性和可靠性。它可編程,且易于配置和維護(hù)。PLC通常用于
    的頭像 發(fā)表于 11-21 16:10 ?2680次閱讀