STM32 硬件UART接收超时检测设置

本文介绍了如何在STM32中设置硬件UART接收超时检测,适用于双工通信中需要超时判断的场景,如Modbus协议。通过CubeMx配置串口并参考数据手册启用超时检测功能,实现无需软件定时器的超时判断。文中提供了一段使能超时检测的代码并在测试中得到验证。
摘要由CSDN通过智能技术生成

STM32 硬件UART接收超时检测设置

-----------------本文作者“智御电子”,期待与电子爱好者交流学习。----------------

应用场景

在uart应用中有时候需要进行双工通信,主机需要对从机的数据进行接收超时检测,例如modbus协议,主机在接收从机数据在3.5个字节时间后认为数据包接收完毕。那在这种情况下,一般的做法是设置一个定时器,在每接收到一个字节时清零定时器重新计数,直到定时器超过3.5个字节时间后触发中断即默认数据包接收完毕。

以上的定时器设置的超时判断是需要软件介入的。这里STM32的有些串口是提供硬件超时检测功能。这样就省去如上的步骤。

设置步骤

本实验是利用CubeMx生成的工程进行验证的。

  • 首先,利用cubemx配置usart1(注意:并不是每个STM32芯片的串口都具有硬件超时检测功能的)。值得注意的是在cubeMX中并没有设置硬件超时的选项,所以这里只是生产可用的usart工程。

  • 生成工程后,我们去数据手册,其中有这样的描述。

    所以本文添加一个使能超时检测的函数,如下所示

void Uart_Rx
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值