STM32常用外设寄存器介绍

STM32微控制器通过寄存器来配置和控制各种外设功能。以下是最常用的外设寄存器分类介绍。

1. 控制寄存器(xxx_CR)

用于配置外设的工作模式、使能外设等。

寄存器 功能 示例
GPIOx_CRL/GPIOx_CRH 配置GPIO引脚的模式(输入/输出/复用/模拟)和速度 CRL控制0-7引脚,CRH控制8-15引脚
USART_CR1 配置串口的工作模式、数据位、校验等 UE位使能USART,M位设置数据长度
TIMx_CR1 配置定时器的计数模式、预分频等 CEN位启动定时器,DIR设置计数方向

2. 数据寄存器(xxx_DR)

存储外设输入或输出的数据。

寄存器 功能 示例
GPIOx_IDR 读取GPIO引脚的输入数据 IDR0-IDR15对应引脚0-15的输入状态
GPIOx_ODR 设置GPIO引脚的输出数据 ODR0-ODR15对应引脚0-15的输出状态
USART_DR 存储串口发送或接收的数据 写入数据发送,读取数据接收

3. 状态寄存器(xxx_SR)

实时更新外设的运行状态(标志位)。

寄存器 功能 示例
USART_SR 指示串口状态 TC位表示发送完成,RXNE表示接收数据就绪
ADC_SR 指示ADC转换状态 EOC位表示转换完成
TIMx_SR 定时器状态标志 UIF位表示更新事件

4. 中断相关寄存器

管理外设的中断触发和优先级。

寄存器 功能 示例
NVIC_ISER 使能中断 SETENA位对应不同中断通道
EXTI_IMR 配置外部中断屏蔽 MR0-MR19对应不同外部中断线
USART_CR1 配置串口中断 RXNEIE使能接收中断,TCIE使能发送完成中断

5. 时钟控制寄存器(RCC相关)

配置外设的时钟源和使能时钟。

寄存器 功能 示例
RCC_AHB1ENR 使能AHB1总线上的外设时钟 GPIOAEN位使能GPIOA时钟
RCC_APB1ENR 使能APB1总线上的外设时钟 USART2EN位使能USART2时钟
RCC_CFGR 配置系统时钟源和分频 SW位选择系统时钟源

6. DMA相关寄存器

配置DMA传输的源地址、目标地址和数据长度。

寄存器 功能 示例
DMAx_CPAR 设置DMA外设地址 配置外设数据寄存器地址
DMAx_CMAR 设置DMA内存地址 配置内存缓冲区地址
DMAx_CNDTR 设置传输数据量 设置要传输的数据字节数

7. 定时器专用寄存器

配置定时器的计数、捕获比较、PWM生成等。

寄存器 功能 示例
TIMx_ARR 自动重装载值 设置定时器溢出值
TIMx_CCR1 捕获/比较值 设置PWM占空比
TIMx_PSC 预分频器 设置定时器时钟分频

8. ADC/DAC相关寄存器

配置模数/数模转换的参数和启动转换。

寄存器 功能 示例
ADC_CR2 控制ADC转换 ADON位使能ADC,SWSTART启动转换
DAC_DHR12R1 DAC数据保持寄存器 设置DAC通道1的12位右对齐输出值
ADC_SQR1 配置ADC转换序列 L位设置转换序列长度

9. 其他常用寄存器

寄存器 功能 示例
AFIO_MAPR 复用功能重映射 重定时器通道到不同引脚
PWR_CR 电源控制 设置低功耗模式
BKP_DR1 备份寄存器 掉电后保持数据

寄存器操作示例

GPIO配置示例:

复制代码
// 设置GPIOA的引脚5为输出模式
GPIOA->CRL &= ~(0xF << 20);  // 清除原有配置
GPIOA->CRL |= (0x3 << 20);   // 推挽输出模式,最大速度50MHz
GPIOA->ODR |= (1 << 5);      // 输出高电平

USART配置示例:

复制代码
// 使能USART1时钟
RCC->APB2ENR |= RCC_APB2ENR_USART1EN;

// 配置USART1波特率115200 (假设系统时钟72MHz)
USART1->BRR = 0x1D4C;        // 72000000/(16 * 115200) = 39.0625

// 使能USART1
USART1->CR1 |= USART_CR1_UE | USART_CR1_TE | USART_CR1_RE;

**注意:**不同STM32系列和型号的寄存器可能略有差异,具体使用时请参考对应芯片的参考手册。

相关推荐
坏柠3 小时前
深入浅出SPI通信协议与STM32实战应用(W25Q128驱动)(实战部分)
stm32·单片机·嵌入式硬件
硬件进化论5 小时前
硬件工程师面试问题(四):车载MCU面试问题与详解
单片机·嵌入式硬件·数码相机·电视盒子·智能音箱·智能手表
nuannuan2311a8 小时前
CR03AM-12-ASEMI智能家居专用CR03AM-12
单片机
蓝桥_吹雪9 小时前
【备赛】蓝桥杯实现多个LED联合控制
笔记·stm32·单片机·蓝桥杯
sewinger10 小时前
STM32外部中断EXTI:原理、结构与应用
stm32·单片机·嵌入式硬件·iot
触角0101000110 小时前
STM32看门狗原理与应用详解:独立看门狗 vs 窗口看门狗(上) | 零基础入门STM32第九十四步
驱动开发·stm32·单片机·嵌入式硬件·物联网
LaoZhangGong12310 小时前
char表示有符号,还是无符号
经验分享·stm32·单片机·嵌入式硬件
多多*10 小时前
2024第十五届蓝桥杯大赛软件赛省赛Java大学B组 报数游戏 类斐波那契循环数 分布式队列 食堂 最优分组 星际旅行 LITS游戏 拼十字
java·linux·stm32·单片机·嵌入式硬件·spring·eclipse
菜鸟江多多11 小时前
32x32热成像高斯滤波图像处理
图像处理·单片机·算法
sewinger12 小时前
STM32:深入理解定时器与使用定时中断实现精准延时
单片机·嵌入式硬件