关于stm32,节目中的u8和u16是什么意思?
U8是无符号字符,u16是无符号短整型,u32是无符号长整型。
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