日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 芯聞號 > 充電吧
[導(dǎo)讀]加入有如下代碼行: ? uchar rad[6]={0}; Read_InfNFlashSegment(Flash_InfD_BaseAddr,DGsensor_RadX_Offset,rad,6

加入有如下代碼行:

? uchar rad[6]={0};
Read_InfNFlashSegment(Flash_InfD_BaseAddr,DGsensor_RadX_Offset,rad,6);????? ? //讀出rad的值

gSlopeBaseAngle.rad_x=*((int*)&rad[0]);????? ? //rad_x,rad_y,rad_z是int類型的值
gSlopeBaseAngle.rad_y=*((int*)&rad[2]);
gSlopeBaseAngle.rad_z=*((int*)&rad[4]);

實際上 通過指針轉(zhuǎn)化后的值gSlopeBaseAngle.rad_x并不等于rad[0]*256+rad[1](假定小端模式),而是會多出來一個異常的字符。

主要原因是因為

????????uchar類型的是一字節(jié)對齊的

????? ? int類型是2字節(jié)對齊的,如果MCU的系統(tǒng)字是2字節(jié),則定義int類型可能會總是在偶地址開始

。。。所以若果uchar是定義的起始地址在基地址時,就會出錯,多出來一個填充地址


解決方法:

????? #pragma data_alignment=2?
? uchar rad[6]={0};

#pragma pack ()

? ? 加上這句話后,定義rad時則會自動2字節(jié)對齊,起始地址就會在int對齊字上,通過指針訪問就正常了

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉