STM32F446VE 在MDK下編譯測試大小端模式

源程序如下:

    i = 0x12345678;
    
    printf("\r\ni = 0x%X,",i);
    printf("addri = 0x%X,",&i);

    printf("\r\naddru8i = 0x%X,",(u8*)(&i));
    printf("u8i = 0x%X,",*((u8*)(&i)));
    
    printf("\r\naddru8i+1 = 0x%X,",(u8*)(&i)+1);
    printf("u8i+1 = 0x%X,",*((u8*)(&i)+1));

    printf("\r\naddru8i+2 = 0x%X,",(u8*)(&i)+2);
    printf("u8i+2 = 0x%X,",*((u8*)(&i)+2));

    printf("\r\naddru8i+3 = 0x%X,",(u8*)(&i)+3);
    printf("u8i+3 = 0x%X,",*((u8*)(&i)+3));

    printf("\r\nTP_test:end");

串口打印出的數據如下:

i = 0x12345678,addri = 0x2001A08C,

addru8i   = 0x2001A08C,u8i   = 0x78,
addru8i+1 = 0x2001A08D,u8i+1 = 0x56,
addru8i+2 = 0x2001A08E,u8i+2 = 0x34,
addru8i+3 = 0x2001A08F,u8i+3 = 0x12,

通過以上分析,我們知道,低位數據0x78存儲在低地址0x8C,而高8位數據0x12存儲在高位字節0x8F處,所以數據處理的模式是小端模式。

 

大小端模式的區別:

大端模式:是指數據的高字節,保存在內存的低地址中,而數據的低字節,保存在內存的高地址中。ARM/PowerPC等處理器採用大端模式。但cortex-M系列應該是小端模式,其他stm32f446這款芯片是小端模式。
小端模式:是指數據的高字節保存在內存的高地址中,而數據的低字節保存在內存的低地址中。Intel架構處理器採用小端模式。

如一個數據:0x12345678;對應內純地址是0x00~0x03。

模式 大端模式 小端口模式
地址 0x00 0x01 0x02 0x03 0x00 0x01 0x02 0x03
數據 0x12 0x34 0x56 0x78 0x78 0x56 0x34 0x12


 

發佈了32 篇原創文章 · 獲贊 18 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章