
不同的CPU系统对 unsigned int, unsigned char等的定义是不一样的,为了避免在不同的CPU上共用代码,一般都是先定义UINT8, UINT16类型,然后用这些自定义的类型编写C程序。这样在不同的CPU上用的时候,只需要改类型定义就好了。这是嵌入式开发的惯例了。
任意选择,u8是unsigned char,u16是unsigned short,u32是unsigned long。
U8、u16和u32都是C语言中的数据类型,分别表示8位、16位和32位长度的数据类型。一个字节是8位,所以u8是1字节,u16是2字节,u32是4字节。
可以在stm32库头文件中找到数据类型的声明
在stdinth中:
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned long uint32_t;
在stm32f10xh 中:
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字节的空间,导致内存的浪费。
os开发中经常遇到的数据如下的数据类型,uint8_t、uint16_t、uint32_t、uint64_t。他们的意思分别是:
uint8_t 无符号1个字节的整型
uint16_t 无符号2个字节的整型
uint32_t 无符号4个字节的整型
uint64_t 无符号8个字节的整型
注:一个字节有8位。不知道兄弟是谁,呵,看了你的回复,我到google查了下,uint8_t定义于<stdinth>中,可见于:
>
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)