关于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