《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 業界動態 > 例說MCU的端模式

例說MCU的端模式

2015-05-28

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

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

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

  定義一個結構體類型如下圖:

  在中編寫如下程序:

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

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

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

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

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

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

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

  由以上實驗我們通過對比和STM32F072在未進行端轉換前內存復制的結果得出結論:

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

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

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

  當然,你可以選擇不進行端模式的轉換,而直接通過按字節的方式來存儲,但這樣的話很多時候會大大地降低您代碼的效率,這里就不多作解釋了。

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


本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 国产日产成人免费视频在线观看 | 色天使久久综合网天天| 国产精品中文字幕在线| 97久久精品人妻人人搡人人玩| 少妇太爽了在线观看| 中文字幕亚洲综合久久| 日本老妇人乱xxy| 九月婷婷人人澡人人添人人爽| 欧美在线观看www| 亚洲第一区精品日韩在线播放| 玉蒲团2之玉女心经| 制服丝袜一区二区三区| 美女扒开尿口让男人捅| 国产一级在线免费观看| 韩国三级大全久久电影| 国产成人综合美国十次| 五月婷婷婷婷婷| 国产精品亚洲片夜色在线| 69国产成人精品午夜福中文| 在线中文字幕日韩| GOGOGO免费高清在线中国| 女仆的味道hd中字在线观看| 中出五十路免费视频| 我的娇妻acome| 久久久999国产精品| 日本三级欧美三级人妇视频黑白配| 久久精品国产亚洲AV蜜臀色欲| 欧洲精品在线观看| 亚洲国产欧美在线人成精品一区二区| 欧美裸体XXXX极品少妇| 亚洲精品国产电影| 波多野结衣大战黑鬼101| 亚洲美女aⅴ久久久91| 热久久中文字幕| 亚洲视频你懂的| 深夜福利一区二区| 亚洲综合久久一本伊伊区 | 欧美极度极品另类| 亚洲欧洲另类春色校园网站| 欧美精品国产一区二区| 亚洲欧美日韩在线观看看另类|