- C 标准固定宽度类型
这类类型定义在 <stdint.h> 、 <stdbool.h> 等标准头文件中,特点是位数固定,移植性好。
类型 位数 描述 常见用途
int8_t 8 有符号 8 位整数 小范围有符号数值存储
uint8_t 8 无符号 8 位整数 数据缓冲区、字节操作
int16_t 16 有符号 16 位整数 ADC 采样值、传感器数据
uint16_t 16 无符号 16 位整数 定时器计数值、短周期计数
int32_t 32 有符号 32 位整数 通用计算、较大数值存储
uint32_t 32 无符号 32 位整数 寄存器访问、长周期计数
int64_t 64 有符号 64 位整数 大数值运算
uint64_t 64 无符号 64 位整数 时间戳、大数据存储
bool 1 布尔值(true / false) 逻辑判断
使用建议:
优先使用这些类型替代 int 、 long 等依赖平台的类型。
缓冲区和字节流操作常用 uint8_t 。
逻辑判断尽量用 bool 或枚举,提高可读性。
- CMSIS 扩展类型
CMSIS(Cortex Microcontroller Software Interface Standard)是 ARM 公司为 Cortex-M 系列内核制定的标准接口,提供了一些方便底层编程的类型。
类型 描述 常见用途
volatile uint32_t 防止编译器优化的 32 位无符号整数 直接访问寄存器时使用
size_t 内存大小类型(通常为 32 位) sizeof 结果、内存函数参数
ptrdiff_t 指针差值类型 指针运算
使用建议:
对寄存器进行读写时,务必加 volatile 关键字,防止编译器优化导致值读取错误。
内存操作函数(如 memcpy 、 memset )参数用 size_t 。
- HAL/LL 库专用类型
HAL(Hardware Abstraction Layer)和 LL(Low-Layer)库中定义了大量枚举和结构体,用于描述外设状态和配置。
类型 用途
GPIO_PinState GPIO 电平状态
FlagStatus 标志位状态判断
FunctionalState 功能开关控制
ErrorStatus 错误状态返回
HAL_StatusTypeDef HAL 函数返回状态