关于使用定时器延时的溢出问题

使用的模板时硬汉的modbus rtu的从站代码。硬件环境GD32F303,使用485通信。

问题描述:在115200波特率下,接收代码的时候,会产生数据丢失的现象,基本2-3次会出现一次。在9600波特率下数据直接被打断,数据没有接收完成就会触发定时器,导致接收完成。

分析结果:在定时器设置时,定时器设置最大的计数值为2000,会导致计数溢出,比较通道的定时器中断直接被触发,导致数据不能正常接收。

解决方案:将定时器的计数上限改为最大值。疑问:在最大值的情况下,长时间运行的话也有可能产设在计数到上限附近的时候,也会产生溢出。

尴尬,写的时候有想到了,因为定义的时16bit的变量,所以变量和计数值会同步溢出。

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 3
收藏 2
关注 11
成为作者 赚取收益
全部留言
0/200
成为第一个和作者交流的人吧