《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 模擬設(shè)計(jì) > 業(yè)界動(dòng)態(tài) > 例說(shuō)MCU的端模式

例說(shuō)MCU的端模式

2015-05-28

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

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

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

  定義一個(gè)結(jié)構(gòu)體類型如下圖:

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

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

  仿真結(jié)果-端模式轉(zhuǎn)換前直接進(jìn)行結(jié)構(gòu)體到數(shù)組的內(nèi)存復(fù)制的結(jié)果:

  仿真結(jié)果-端模式轉(zhuǎn)換后進(jìn)行結(jié)構(gòu)體到數(shù)組的內(nèi)存復(fù)制的結(jié)果:

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

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

  仿真結(jié)果-端模式轉(zhuǎn)換前直接進(jìn)行結(jié)構(gòu)體到數(shù)組的內(nèi)存復(fù)制的結(jié)果:

  仿真結(jié)果-端模式轉(zhuǎn)換后進(jìn)行結(jié)構(gòu)體到數(shù)組的內(nèi)存復(fù)制的結(jié)果:

  由以上實(shí)驗(yàn)我們通過(guò)對(duì)比和STM32F072在未進(jìn)行端轉(zhuǎn)換前內(nèi)存復(fù)制的結(jié)果得出結(jié)論:

  1. 采用的是大端模式,即32位或16位數(shù)據(jù)按照從高字節(jié)到低字節(jié)的順序存儲(chǔ)在內(nèi)存當(dāng)中。

  2. STM32F072采用的是小端模式,即32位或16位數(shù)據(jù)按照從低字節(jié)到高字節(jié)的順序存儲(chǔ)在內(nèi)存當(dāng)中。

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

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

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


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 男女毛片免费视频看 | 国产精品国产三级在线高清观看 | 67194成人在线观看 | 亚洲视频在线观看 | 中文字幕亚洲 综合久久 | 国产精品成人不卡在线观看 | 免费在线黄色网址 | 国产91免费在线 | 精品视频免费在线 | 成年人在线观看视频免费 | 美女视频网站永久免费观看软件 | 日韩经典在线观看 | 国产成人一区二区三中文 | 一区二区在线播放福利视频 | 亚洲国产成人久久笫一页 | 国产天堂在线一区二区三区 | 久久久久久久久国产 | 亚洲精品视频免费在线观看 | 美国成人免费视频 | 亚洲精品高清视频 | www黄网站| 午夜宅男在线永远免费观看网 | 嫩草影院在线观看网站成人 | 亚洲综色 | 亚洲素人在线 | 影音先锋色先锋女同另类 | 久久综合久美利坚合众国 | 成人区精品一区二区不卡亚洲 | 在线看国产视频 | 午夜成人免费影院 | 亚洲自拍成人 | 黑色丝袜美美女被躁视频 | 久久视频精品36线视频在线观看 | 免费一级a毛片在线播放视 免费一级α片在线观看 | 久久在线国产 | 国产精品免费大片一区二区 | 国产三级在线视频播放线 | 精品xxxxxbbbb欧美中文 | 狠狠色丁香婷婷综合小时婷婷 | 手机看片久久高清国产日韩 | 亚洲 欧美 激情 另类 校园 |