使用最新Hal库实现USART中断收发功能(STM32F4xx)

本文详细介绍了STM32F4XX系列的USART功能、中断处理、模式配置和寄存器使用,展示了如何使用STM32CubeMX配置USART参数并生成工程,以及如何利用HAL库实现串口发送、接收功能,包括中断接收和printf打印示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

概述

1 认识STM32F4XX的USART

1.1 USART 功能说明

1.2 USART的中断

1.3 USART 模式配置

1.4 USART的寄存器

2 使用STM32CubeMX 生成工程

2.1 配置参数

2.2 生成工程代码

3 实现软件功能

3.1 软件功能介绍

3.2 认识USART Hal库

3.2.1 初始化函数组

3.2.2 发送/接收函数组

3.2.3 中断和callback函数组

4 实现串口发送和接收功能接口

4.1 发送函数

4.2 接收函数

4.3 实现printf打印功能

4.4 完整程序

5 测试

5.1 测试代码功能介绍

5.2 测试代码实现

5.3 测试发送和接收功能

5.3.1 测试发送功能

5.3.2 测试接收数据功能


源代码下载地址: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)选择串口工作模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值