使用K60串口接收字符串问题

2020-02-11 10:00发布

用单片机K60的串口和上位机完成通信,需要接收上位机的数据,是字符串,长度未知,数据开始为0xaa,结尾是中间数据的和,作为校验值,查了一些文档,串口接收数据的中断只能一个字节一个字节接收,有没办法一次串口中断吧数据都接收进来,这样就可以避免频繁的进入串口接收中断,初学K60,请各位赐教一下!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
zjipc
1楼-- · 2020-02-11 12:11
可以一次性接收多个字节的数据吗,而不是一个字节进一次中断
ccq101
2楼-- · 2020-02-11 12:13
没用过K60,不过单片机都是一个字节一个字节的接收,如果你不想频繁中断 可以试试DMA模式
或者使用接收超时,接收一个字节后,如果超过2~3个波特率间隔没有收到新的字节 就可以决定 这个数据包已经传输完毕了。
或者使用环形队列,串口中断只负责放数据进去缓冲区。然后在主函数或者定时器判断缓冲区是否有数据,且处理。
zjipc
3楼-- · 2020-02-11 16:39
号的,谢谢,我试一下DMA
snail_dongbin
4楼-- · 2020-02-11 22:12
 精彩回答 2  元偷偷看……
zjipc
5楼-- · 2020-02-12 01:50
snail_dongbin 发表于 2016-3-14 12:27
首先你要弄明白一个问题,串口是一个一个接,无论什么单片机 什么pc 都是一样的,只不过人家封装的好,协议 ...

我处理程序也是放在其他中断里,对时间的要求比较高,我是怕频繁串口中断影响了其他中断服务程序,上一次,我串口发送数据放在中断里,波特率设成9600,其他程序就不能正常的执行了,后来改成115200,其他程序就能正常执行
snail_dongbin
6楼-- · 2020-02-12 06:42
zjipc 发表于 2016-3-14 21:46
我处理程序也是放在其他中断里,对时间的要求比较高,我是怕频繁串口中断影响了其他中断服务程序,上一次 ...

发送放中断里还9600 ,不等才怪

串口发送一般可以用发送中断,高级点的可以用dma
波特率我一般都是115200 结尾用校验码。从没出过问题

一周热门 更多>