关键字 | 位数 | 表示范围 | stdint关键字 | ST关键字 |
---|---|---|---|---|
char | 8 | -128 ~ 127 | int8_t | s8 |
unsigned char | 8 | 0 ~ 255 | uint8_t | u8 |
short | 16 | -32768 ~ 32768 | int16_t | s16 |
unsigned short | 16 | 0 ~ 65535 | uint16_t | u16 |
int | 32 | -231 ~ 231-1 | int32_t | s32 |
unsigned int | 32 | 0 ~ 232-1 | uint32_t | u32 |
long | 32 | -231 ~ 231-1 | ||
unsigned long | 32 | 0 ~ 232-1 | ||
long long | 64 | -263 ~ 263-1 | int64_t | |
unsigned long long | 64 | 0 ~ 232-1 | uint64_t | |
float | 32 | -3.4E+38 ~ 3.4E+38 | ||
double | 64 | -1.79E+308 ~ +1.79E+308 |
左边三列是C语言的关键字、位数和表示范围。比如int是有符号的整数类型,占32位,unsigned int是无符号的整数类型,也占32位。
右边两列是C语言stdint.h文件和ST对这些变量的重命名。至于为什么要重命名,原因有很多,比如:
int的位数在不同的编译器中是不同的,在16位的编译器中,int是16位,在32位的编译器中,int是32位的。即在STM32中,int是32位的,为防止混淆,所以另外有专门的名字。
int8_t是char的新名字,int8表示8位整型数据,后面加个t表示这是用typedef重新命名的变量类型。
u8就是stm32单片机老版本库函数的定义方式,在新版本里已经很少见到了。但是写u8也不会报错。