U8、u16和u32都是C語言數據類型,分別代表8位、16位和32位數據類型。壹個字節是8位,所以u8是1字節,u16是2字節,u32是4字節。
妳可以在stm32庫的頭文件中找到數據類型的聲明。
在stdint.h中:
typedef無符號字符uint 8 _ t;
typedef無符號短整型uint 16 _ t;
typedef無符號長整型uint 32 _ t;
在stm32f10x.h中:
typedef uint32 _ t u32
typedef uint 16 _ t u 16;
typedef uint8 _ t u8
擴展數據
CPU按其處理信息的字長可分為8位微處理器、16位微處理器、32位微處理器和64位微處理器。字和半字是根據處理器的特性決定的,而字節是8位。
Stm32是32位處理器,所以它的字是32位(每次處理長度為4字節的數據),半字自然是16bit(2字節)。存儲半字數據的寄存器由u16類型變量訪問,但如果u8類型變量只能訪問數據的低8位,用u32類型變量讀取沒有問題,寫的時候會因為編譯器不同而有偏差。
與傳統arm相比,stm32最大的優勢是不需要對齊,三類數據可以無縫存儲在內存中。但是傳統的arm7或者arm9是按照地址對齊的,也就是說8位或者16位的數據會占用4個字節的空間,會造成內存的浪費。
stdint.h - C++參考
頭文件:stm32f10x.h