Keil中常见的数据类型如下表
关键字 | 位数 | 表示范围 | stdint.h关键字 | ST关键字 |
---|---|---|---|---|
char | 8 | -128 ~ 127 | int8**_t** | s8 |
unsigned char | 8 | 0 ~ 255 | uint8**_t** | u8 |
short | 16 | -32768 ~ 32767 | int16**_t** | s16 |
unsigned short | 16 | 0 ~ 65535 | uint16_t | u16 |
int | 32 | -2147483648 ~ 2147483647 | int32_t | s32 |
unsigned int | 32 | 0 ~ 4294967295 | uint32_t | u32 |
long | 32 | -2147483648 ~ 2147483647 | ||
unsigned long | 32 | 0 ~ 4294967295 | ||
long long | 64 | -(2^64)/2 ~ (2^64)/2-1 | int64_t | |
unsigned long long | 64 | 0 ~ (2^64)-1 | uint64_t | |
float | 32 | -3.4e38 ~ 3.4e38 | ||
double | 64 | -1.7e308 ~ 1.7e308 | (这一栏就是新名字) | (这是ST以前用的名字) |
高亮一栏的是在MDK中推荐使用的
-
char:有符号字符型,占8位。可以表示-128~127的整数,这个名字有时候会名不对题,比如这个char本意是字符型数据的意思,按名字来说它就应该存放字符的,但是我们单片机通常用它来存放整数而不是字符,所以C语言和ST就给这些变量换了个名字,C语言提供的有stdlint.h这个头文件,使用了新的名字,比如int8_t就是char的新名字,表示的意思就是8位整型数据,右边加个_表示这是用typedef重新命名的变量类型,把名字换成u8是为了兼容老版本
-
STM32中int是占32位的。如果要用16位的数据,要用short来表示
打开STM32的stm32f10x.h,可以看到用typedef重新命名的变量类型