1.C语言数据类型与STM32的衔接
关键字 | 位数 | 表示范围 | stdint关键字 | 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 |
2、宏定义
关键字:#define
用途:用一个字符串代替一个数字,便于理解,防止出错;提取程序中经常出现的参数,便于快速修改
定义宏定义: #define ABC 12345 引用宏定义: int a = ABC; //等效于int a = 12345;
3、typedef
关键字:typedef
用途:将一个比较长的变量类型名换个名字,便于使用
定义typedef: typedef unsigned char uint8_t;
引用typedef: uint8_t a; //等效于unsigned char a;
4、结构体
关键字:struct
用途:数据打包,不同类型变量的集合
定义结构体变量: struct{char x; int y; float z;} StructName;
因为结构体变量类型较长,所以通常用typedef更改变量类型名 引用结构体成员: StructName.x = 'A'; StructName.y = 66; StructName.z = 1.23; 或 pStructName->x = 'A'; //pStructName为结构体的地址
pStructName->y = 66; pStructName->z = 1.23;
5、枚举
关键字:enum
用途:定义一个取值受限制的整型变量,用于限制变量取值范围;宏定义的集合
定义枚举变量: enum{FALSE = 0, TRUE = 1} EnumName; 因为枚举变量类型较长,所以通常用typedef更改变量类型名
引用枚举成员: EnumName = FALSE; EnumName = TRUE;