<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 牛人業(yè)話(huà) > 例說(shuō)MCU的端模式

例說(shuō)MCU的端模式

—— 基于STM8S105K4和STM32F072RB
作者:veiko 時(shí)間:2015-05-11 來(lái)源:電子產(chǎn)品世界 收藏

  端模式,大端,小端是什么?沒(méi)有用到的話(huà),相信你也不一定清楚。我第一次接觸是在UART發(fā)送結構體數據的時(shí)候,說(shuō)到這里你也許猜到了一些。

本文引用地址:http://dyxdggzs.com/article/273944.htm

  端模式(Endian)的這個(gè)詞出自Jonathan Swift書(shū)寫(xiě)的《格列佛游記》。這本書(shū)根據將雞蛋敲開(kāi)的方法不同將所有的人分為兩類(lèi),從圓頭開(kāi)始將雞蛋敲開(kāi)的人被歸為Big Endian,從尖頭開(kāi)始將雞蛋敲開(kāi)的人被歸為L(cháng)ittile Endian。小人國的內戰就源于吃雞蛋時(shí)是究竟從大頭(Big-Endian)敲開(kāi)還是從小頭(Little-Endian)敲開(kāi)。在計算機業(yè)Big Endian和Little Endian也幾乎引起一場(chǎng)戰爭。在計算機業(yè)界,Endian表示數據在存儲器中的存放順序。下文舉例說(shuō)明在計算機中大小端模式的區別。

  下表說(shuō)明了一個(gè)32位的數據在大端模式及小端模式下按字節存儲的先后順序(HH表示32位數據的最高字節,LL則為最低字節):

  由上表可以看出,在大端模式中,一個(gè)多字節數據按從高字節到低字節的順序存儲,而在小端模式中則相反。在實(shí)際應用當中,不同的處理器采用的端模式也不一樣,為了讓大家更簡(jiǎn)單地理解以及引起大家足夠的重視,下面我分別以STM32F103和STM8S103K4來(lái)做一個(gè)簡(jiǎn)單的實(shí)驗。

  定義一個(gè)結構體類(lèi)型如下圖:

  在中編寫(xiě)如下程序:

  [說(shuō)明]: 以上只是工程中截取的部分代碼,完成的工程在附件當中,附件地址在審核后將會(huì )在文章回貼中提供給大家。

  仿真結果-端模式轉換前直接進(jìn)行結構體到數組的內存復制的結果:

  仿真結果-端模式轉換后進(jìn)行結構體到數組的內存復制的結果:

  在STM32F072中編寫(xiě)如下程序(結構體定義與前文所述一致):

  [說(shuō)明]: 以上只是工程中截取的部分代碼,完成的工程在附件當中,附件地址在審核后將會(huì )在文章回貼中提供給大家。

  仿真結果-端模式轉換前直接進(jìn)行結構體到數組的內存復制的結果:

  仿真結果-端模式轉換后進(jìn)行結構體到數組的內存復制的結果:

  由以上實(shí)驗我們通過(guò)對比和STM32F072在未進(jìn)行端轉換前內存復制的結果得出結論:

  1. 采用的是大端模式,即32位或16位數據按照從高字節到低字節的順序存儲在內存當中。

  2. STM32F072采用的是小端模式,即32位或16位數據按照從低字節到高字節的順序存儲在內存當中。

  由此也證明了前文中的說(shuō)法,不同的處理器采用的端模式可能不一樣。也正因為此,我們在編寫(xiě)某些外部設備驅動(dòng)的時(shí)候或者有關(guān)通信協(xié)議的驅時(shí)應該把端模式考慮進(jìn)去,要進(jìn)行轉換可以參考下面的代碼:

  當然,你可以選擇不進(jìn)行端模式的轉換,而直接通過(guò)按字節的方式來(lái)存儲,但這樣的話(huà)很多時(shí)候會(huì )大大地降低您代碼的效率,這里就不多作解釋了。

  [特別說(shuō)明]: 在上文及上文的圖中有些地方注釋說(shuō)的是端模式的轉換,并不是指把的端模式進(jìn)行轉換。

  請在文章中下部增加如下信息:

  基于STM32F072的端模式例子:http://share.eepw.com.cn/share/download/id/372958

  STM8大小端例程:http://share.eepw.com.cn/share/download/id/372957

逆變器相關(guān)文章:逆變器原理


可控硅相關(guān)文章:可控硅工作原理


逆變器相關(guān)文章:逆變器工作原理


比較器相關(guān)文章:比較器工作原理




關(guān)鍵詞: MCU STM8S105K4

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>