求一个好点的算法逻辑,单片机中断相关

2020-01-20 18:59发布

有个MCU,串口中断不断的接收数据,按字节计数++,另外有个10ms的定时器,一直开着,也就是一直是10ms产生一次中断,现在想利用这10ms的定时器产生的中断,在这个中断中实现每20毫秒判断一次串口是处于接收数据的忙状态还是处于空闲状态,说明:串口中断是按帧接收数据的,我的意思就是想判断目前数据帧是否接收完毕,还是说处于正在接收状态。
搞了好久,测试都不准,我想请教下大家,有没有好点的算法逻辑,还是说我的逻辑是不合理的。欢迎大虾拍砖,在线等,急用,谢谢。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
RAMILE
1楼-- · 2020-01-20 20:44
 精彩回答 2  元偷偷看……
adongliu
2楼-- · 2020-01-21 00:21
看看freemodbus的实现就明白了。
lingdianhao
3楼-- · 2020-01-21 03:24
2楼正解,就看楼主明白了不,超时定时器的时间就是你的帧最小间隔,比如Modbus帧间隔是3.5个字符。
lovelywwei
4楼-- · 2020-01-21 04:36
2楼已经说得很清楚了,还以为是什么新问题,原来就是串口接收数据什么时候结束的判断。当然,这个超时判断的timeout得根据波特率来,比如9600 bps,差不多1ms 1个字节,你可以设置为超时5ms认为帧传输结束。
jzkn
5楼-- · 2020-01-21 04:37
这个需要你算一下你的波特率,还有数据帧是多长,传输间隔是多少。比如波特率9600,大概1ms一个字节。1个数据帧10个字节,大概10ms就传完了。间隔一般设定长一点,这样才好判断。如果你一个包传10ms,间隔5ms又传,处理起来就相对麻烦一点。
yuyu87
6楼-- · 2020-01-21 06:01
 精彩回答 2  元偷偷看……

一周热门 更多>