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;
擴展資料
CPU按照其處理信息的字長可以分為:8位微處理器、16位微處理器、32位微處理器以及64位微處理器等。字7a686964616fe4b893e5b19e31333431346439、半字是根據處理器的特性決定的,字節則都是8bit。
stm32是32bit處理器,所以它的字是32bit的(一次處理4字節長度的數據),半字自然就是16bit(2字節)。存儲半字類型數據的寄存器由u16類型的變量訪問,但是如果用u8類型變量只能訪問該數據低8位,用u32類型變量讀的時候沒問題,寫的時候會因編譯器的不同而出現偏差。
stm32和傳統的arm相比最大的好處就是不需要對齊,三種類型的數據可以在內存中無縫的存放。而傳統的arm7或arm9等是照着地址對齊的,就是說不管8bit或者16bit的數據都要占用4個字節的空間,這樣的結果就是造成內存的浪費。
參考資料來源:stdint.h - C++ Reference
參考資料來源:Header Files : stm32f10x.h