当前位置: 首页 > news >正文

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_DHR12R1DAC数据保持寄存器设置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系列和型号的寄存器可能略有差异,具体使用时请参考对应芯片的参考手册。

相关文章:

  • golang并发原语groutine channel select sync包
  • vue2打包部署到nginx,解决路由history模式下页面空白问题
  • C++ —— 文件操作(流式操作)
  • Linux服务宕机,java服务导致的内存溢出
  • 公有云子账号认证的原理和步骤
  • 第十六章:向微服务迈进_《凤凰架构:构建可靠的大型分布式系统》
  • linux提权 corn 提权
  • 集成电流电压和功率采样输出的芯片
  • 字符串、列表、元组、字典
  • 学透Spring Boot — 017. 魔术师—Http消息转换器
  • C++中高精度运算问题
  • QT工程建立
  • JavaWeb餐厅点餐系统
  • c++中虚函数(virtual),重写(override),多态(重点介绍动态多态)
  • 《野史未必假》王磊
  • 视频分类的深度学习模型改为回归模型
  • turtle图形化编程等级考试考点汇总(适用于青少年编程学习)
  • 【数据分享】1999—2023年地级市的文化/体育/卫生/社会保障等公服设施相关指标(Shp/Excel格式)
  • 谷歌 AI 协作科学家
  • 【C++】多态详解
  • 有一个箭头的做网站的软件/免费b2b网站有哪些
  • 跨境电商公司/惠州短视频seo
  • 万网网站 banner图片不显示/关键词林俊杰百度云
  • 大型网站开发方案/免费产品推广软件
  • 做网站最常用的软件是什么/快速优化seo
  • 网站服务器返回状态码404/软文范例100字以内