关于“定时器中断干扰串口中断,导致串口中断数据接收不完整”的问题

项目中使用modbusRTU通过WiFi模块通信,上位机定期发送0x03和0x10数据。为实时处理,设置10ms定时器中断导致数据接收中断引发错误。通过计算数据传输时间调整定时器,确保串口接收不受干扰,解决了数据更新问题。
摘要由CSDN通过智能技术生成

问题描述

最近在做的项目,基于modbusRTU,上位机通过wifi模块给单片机发数据。
上位机每隔100ms,周期性发送0x03和0x10。

因为要及时的处理上位机发来的指令,我是在一个10ms的定时器中断中进行modbus数据处理。这就导致一个问题:0x10一次性设置好多寄存器数据,经常会出现串口接收数据还没完,就被定时器中断打断了,也引起单片机中数据更新错误。

解决方法

现在的解决方法是:计算出发送一次0x10的数据需要多少时间,定时器的时间比这个设置的长一点。在串口中断中接收到第一个数据时,开启定时器;在定时器中断中关闭定时器。

这样可以保证串口数据接收过程中不会受到定时器中断的影响。

先写这么多,明天再补充完整 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值