目录
源代码下载地址:stm32f4xxx-USART串口中断收发例程资源-CSDN文库
HAL 库版本: STM32Cube_FW_F4_V1.27.1
概述
本文主要介绍STM32F4XX 通用同步异步收发器 (USART) 的相关知识,详细介绍了USART的特征,寄存器组。还介绍如何使用STM32CubeMX配置USART的相关的参数,并生成项目文件。还使用Hal库函数实现USART1的发送和接收功能,其中接收功能使用中断来实现的。
1 认识STM32F4XX的USART
通用同步异步收发器 (USART) 能够灵活地与外部设备进行全双工数据交换,满足外部设备对工业标准 NRZ 异步串行数据格式的要求。 USART 通过小数波特率发生器提供了多种波特率。它支持同步单向通信和半双工单线通信;还支持 LIN( 局域互连网络)、智能卡协议与 IrDA(红外线数据协会) SIR ENDEC 规范,以及调制解调器操作 (CTS/RTS)。而且,它还支持多处理器通信。通过配置多个缓冲区使用 DMA 可实现高速数据通信。
1.1 USART 功能说明
接口通过三个引脚从外部连接到其它设备。任何 USART 双向通信均需要至少两个引脚:接收数据输入引脚 (RX) 和发送数据引脚输出 (TX):
RX:接收数据输入引脚就是串行数据输入引脚。过采样技术可区分有效输入数据和噪声,从而用于恢复数据。
TX: 发送数据输出引脚。如果关闭发送器,该输出引脚模式由其 I/O 端口配置决定。如果使能了发送器但没有待发送的数据,则 TX 引脚处于高电平。在单线和智能卡模式下,该 I/O用于发送和接收数据( USART 电平下,随后在 SW_RX 上接收数据)。
正常 USART 模式下,通过这些引脚以帧的形式发送和接收串行数据:
● 发送或接收前保持空闲线路
● 起始位
● 数据(字长 8 位或 9 位),最低有效位在前
● 用于指示帧传输已完成的 0.5 个、 1 个、 1.5 个、 2 个停止位
● 该接口使用小数波特率发生器 - 带 12 位尾数和 4 位小数
● 状态寄存器 (USART_SR)
● 数据寄存器 (USART_DR)
● 波特率寄存器 (USART_BRR) - 12 位尾数和 4 位小数。
● 智能卡模式下的保护时间寄存器 (USART_GTPR)
1.2 USART的中断
发送期间:发送完成、清除以发送或发送数据寄存器为空中断。 接收期间:空闲线路检测、上溢错误、接收数据寄存器不为空、奇偶校验错误、 LIN 断路检测、噪声标志(仅限多缓冲区通信)和帧错误(仅限多缓冲区通信)。
1.3 USART 模式配置
1.4 USART的寄存器
这是一张非常完美的图,介绍整个USART的工作原理,以及各个寄存器的功能。了解这张图,就会对STM32的USART模块有一个很深刻的认识。
和USART相关的寄存器的列表,具体每个寄存器表示什么意思,参考文档: STM32F40xxx、STM32F41xxx、STM32F42xxx、STM32F43xxx参考手册(中文).pdf
2 使用STM32CubeMX 生成工程
2.1 配置参数
1)选择串口工作模式