有关stm32的问题,程序里面的u8、u16这些是什么意思啊

2024-12-19 19:33:26
推荐回答(5个)
回答1:

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位微处理器等。字、半字是根据处理器的特性决定的,字节则都是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

回答2:

u8 是 unsigned char
u16 是 unsigned short
u32 是 unsigned int

这些都是变量类型,你可以找本c语言的书看看

回答3:

u8,u16,u32都是unsigned  char类型,不过u8是一个字节的,u16  是2字节,u32是4字节

typedef signed char int8_t;
typedef signed short int int16_t;
typedef signed int int32_t;
typedef signed __int64 int64_t;
/* exact-width unsigned integer types */
typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
typedef unsigned __int64 uint64_t;
typedef int32_t s32;
typedef int16_t s16;
typedef int8_t s8;
typedef uint32_t u32;
typedef uint16_t u16;
typedef uint8_t u8;

回答4:

都是定义字节的,只不过定义的字节个数不同,C语言相关资料里应该都有说。

回答5:

头文件里有定义 你看看 我也不记得了