STM32F10x固件库USART寄存器详解

需积分: 37 15 下载量 174 浏览量 更新于2024-08-10 收藏 4.86MB PDF 举报
"本文档是关于STM32F101xx和STM32F103xx微控制器的固件函数库用户手册,详细介绍了USART(通用同步/异步收发传输器)的寄存器结构及其在STM32芯片中的映射。" 在STM32系列微控制器中,USART是一种用于串行通信的关键外设,其寄存器结构对于理解和配置USART功能至关重要。STM32的USART寄存器结构在"stm32f10x_map.h"文件中被定义为`USART_TypeDef`结构体,包含了多个寄存器,这些寄存器控制着USART的运行状态和参数。 1. **USART状态寄存器(SR)**: 这个寄存器用来读取USART的状态,例如数据接收和发送完成的标志、帧错误、 parity error等。用户可以通过读取这个寄存器来了解USART当前的工作状况。 2. **USART数据寄存器(DR)**: 用于读取接收到的数据或写入待发送的数据。当发送完成标志被设置时,用户可以在这个寄存器中读取接收到的数据;反之,若要发送数据,用户则会将数据写入此寄存器。 3. **USART波特率寄存器(BRR)**: 这个寄存器用来设置USART的通信波特率,它决定了数据传输的速度。通过计算和配置BRR,用户可以精确地设定USART的通信速率。 4. **USART控制寄存器(CR1, CR2, CR3)**: 这三个寄存器用于配置USART的各种操作模式、中断使能、流控设置、奇偶校验等。CR1包含基本的控制选项,如单双工模式选择、奇偶校验控制;CR2涉及更高级的特性,如地址匹配、唤醒功能;CR3则包含硬件流控和额外的中断选项。 5. **USART保护时间和预分频寄存器(GTPR)**: 用于设置USART的保护时间(GUARD TIME)和波特率预分频值,这两个值一起影响着USART的时序。 STM32F10x系列的外设基地址定义在"stm32f10x_map.h"中,如USART1、USART2和USART3的基地址分别在不同的地址空间。这些地址允许程序员通过指针访问相应的寄存器,实现对USART的控制。 例如,`USART1_BASE`是在`APB2PERIPH_BASE`基础上偏移0x3800得到的,这意味着USART1的寄存器可以通过这个地址开始访问。同样,USART2和USART3位于`APB1PERIPH_BASE`的相应偏移位置。 固件函数库提供了一种方便的方式来访问和操作这些寄存器,通过标准化的API(应用编程接口),用户可以简单地调用预定义的函数来控制STM32的USART,而无需直接操作底层寄存器。库函数还包含了错误检查,以增强软件的健壮性,但这些检查在最终的优化代码中可能会被移除以减小程序大小和提高执行速度。 STM32的USART寄存器结构和固件函数库为开发者提供了强大而灵活的工具,使得在嵌入式系统中实现串行通信变得更加容易。通过理解这些寄存器的功能和配置方式,以及如何利用固件库中的API,用户能够高效地实现USART的多种功能,包括数据传输、错误检测和控制选项的设置。