C 语言

地址

STM32 存储器映像

类型起始地址存储器用途
ROM0x0800 0000程序存储器 Flash存储 C 语言编译后的程序代码
0x1FFF F000系统存储器存储 BootLoader,用于串口下载
0x1FFF F800选项字节存储一些独立于程序代码的配置参数
RAM0x2000 0000运行内存 SRAM存储运行过程中的临时变量
0x4000 0000外设寄存器存储各个外设的配置参数
0xE000 0000内核外设寄存器存储内核各个外设的配置参数

特定寄存器的实际地址=寄存器所在外设的起始地址+外设总表的偏移

举例:

(uint32_t)&ADC1->DR
#define ADC1                  ((ADC_TypeDef *) ADC1_BASE)
#define ADC1_BASE             (APB2PERIPH_BASE + 0x2400)
#define APB2PERIPH_BASE       (PERIPH_BASE + 0x10000)
#define PERIPH_BASE           ((uint32_t)0x40000000)

ADC1 为结构体指针,指向 ADC1 外设的起始地址 -> 访问结构体成员,就相当于加上一个地址偏移

数据类型

关键字位数stdint关键字
(新版库函数使用)
ST关键字
(兼容老版本遗留)
char8int8_ts8
unsigned char8uint8_tu8
short16int16_ts16
unsigned short16uint16_tu16
int32int32_ts32
unsigned int32uint32_tu32
long32
unsigned long32
long long64int64_t
unsigned long long64uint64_t
float32
double64