程序中定义变量有时u8,u16,u32怎么选择

如题所述

任意选择,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;

扩展资料:

CPU按照其处理信息的字长可以分为:

8位微处理器、16位微处理器、32位微处理器以及64位微处理器等。字、半字是根据处理器的特性决定的,字节则都是8bit。

Stm32是一个32位处理器,所以它的字是32位(一次处理4个字节的数据),半字是16位(2个字节)。存储半字数据的寄存器是由类型为u16的变量访问的,但是如果类型为u8的变量只能访问更低的8位数据,那么u32变量将被很好地读取,并且根据编译器的不同将以不同的方式写入。

与传统arm相比,stm32最大的优点是不需要对齐,三种类型的数据都可以无缝地存储在内存中。传统的arm7、arm9等是按地址对齐的,这意味着8或16位数据占用4字节的空间,导致内存的浪费。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-23
u8 最大255 u16最大65535 就这个意思u8 a=255 a+1=0 u16 b=255 b+1=256 。
是根据变量可能的最大值 与最小值 确定 变量的定义。
当然 你都定义成u32肯定不容易爆 但是这样很费RAM。本回答被网友采纳
相似回答