c語言中的u32
❶ c語言中u8,u16,u32和int區別
這幾種方式都是在表達同1個意思,沒有區別。
typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
typedef unsigned __int64 uint64_t;
代碼示例:
voidTIM3_Int_Init(u16arr,u16psc)
{
//dosomething...
}
(1)c語言中的u32擴展閱讀
u8,u16,u32的使用
示例:
#defineU32 unsignedint
#defineU16 unsignedshort
#defineS32 int
#defineS16 shortint
#defineU8 unsignedchar
#defineS8 char
unsignedchar=u8
unsignedshortint=u16
unsignedlongint=u32
❷ 有關stm32的問題,程序裡面的u8、u16這些是什麼意思啊
u8是unsigned char,u16是unsigned short,u32是unsigned long。
u8,u16,u32都是C語言數據類型,分別代表8位,16位,32位長度的數據類型,一個位元組是8位,所以u8是1個位元組,u16是2個位元組,u32是4個位元組。
可以在stm32庫頭文件中找到數據類型的聲明
在stdint.h中:
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned long uint32_t;
在stm32f10x.h 中:
typedef uint32_t u32;
typedef uint16_t u16;
typedef uint8_t u8;
(2)c語言中的u32擴展閱讀
CPU按照其處理信息的字長可以分為:8位微處理器、16位微處理器、32位微處理器以及64位微處理器等。字、半字是根據處理器的特性決定的,位元組則都是8bit。
stm32是32bit處理器,所以它的字是32bit的(一次處理4位元組長度的數據),半字自然就是16bit(2位元組)。存儲半字類型數據的寄存器由u16類型的變數訪問,但是如果用u8類型變數只能訪問該數據低8位,用u32類型變數讀的時候沒問題,寫的時候會因編譯器的不同而出現偏差。
stm32和傳統的arm相比最大的好處就是不需要對齊,三種類型的數據可以在內存中無縫的存放。而傳統的arm7或arm9等是照著地址對齊的,就是說不管8bit或者16bit的數據都要佔用4個位元組的空間,這樣的結果就是造成內存的浪費。
❸ 請問一下高手們,C語言宏定義這是個什麼意思,*(u8*)(u32)
思路:抽絲剝繭
知識點:指針
------
//(u32)(x)得到內存地址(無符號32位)
//(u8*)(u32)(x)指向這個內存地址
//*(u8*)(u32)(x)從這個內存地址取值
這里的u8隻是規定了從內存中取什麼東西。
前提是你知道那個地址放的是什麼類型的數據,也可以是u16、u32甚至是某種struct類型。
------
參考:http://ke..com/link?url=A__BKbYUE0TBlITsJY_gec80FhuB_ 2.3節