串口处理问题:不用等待接收多个字节

2020-02-04 09:09发布

本帖最后由 GZLJZ 于 2012-4-20 00:30 编辑

大家好,我之前把波特率设为115200,这样接收发送多个字节都直接在中断里了,
看到大家做485通信都经常波特率设为9600,接收一个字节就要约1MS,做485程序发送接收切换都要加入延时,这样如果发送接收20字节就要20MS多了,
这样单这个串口中断就占80MS,如果主循环里需要80MS以内处理的事情就做不了,
大家是这样处理这个问题的呢?

编辑原因:特率设为9600,接收一个字节好像是约1MS,我写4MS了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
GZLJZ
1楼-- · 2020-02-04 14:09
看到有人说,串口中断接收一个存进缓存里,等全部数据接收完了,在在主程序循环里处理,
但做485通信都知道,从机需要及时回应主机的,希望大家多耐心解答下困扰我的问题,先谢了
nazily215
2楼-- · 2020-02-04 19:58
怎么及时也好,你就在主流程那里把一些复杂的函数拆成小部分完成,这样可以及时的
GZLJZ
3楼-- · 2020-02-05 00:23
接收数据时,使用“中断方式”,清除 RI 后,用一个变量通知主函数,收到新数据。
发送数据时,也用“中断方式”,清除 TI 后,用另一个变量通知主函数,数据发送完毕。
做串口发送接收为了解决死等在那里,使用上面两行方法,我就不知具体主程序里怎么做:



lollipop
4楼-- · 2020-02-05 05:29
 精彩回答 2  元偷偷看……
GZLJZ
5楼-- · 2020-02-05 09:24
lollipop 发表于 2012-4-19 23:12
做个缓冲区,用中断方式发送。


这样就是不行呀,假设主机发个地址过来,从机要回应主机呀,
我知道有人就是把地址和数据一起发给从机了,从机全部接收完成后才去处理,是不是需要的数据,
lollipop
6楼-- · 2020-02-05 15:19
GZLJZ 发表于 2012-4-19 23:18
这样就是不行呀,假设主机发个地址过来,从机要回应主机呀,
我知道有人就是把地址和数据一起发给从机了 ...

你可以在串口的中断服务程序里判断接收到的信息

一周热门 更多>