单片机学习小组
直播中

h1654155275.5954

7年用户 207经验值
私信 关注

请问怎么实现多任务串口打印?

想实现在多个任务中调用串口打印,要求不能乱码,也就是每个任务中的字符都能完整的打印出来,目前还没有思路,大家帮忙想想
该怎么实现?

回帖(9)

王龙

2019-5-17 08:01:33
缓冲+定时打印
大致原理是,调用打印函数时将带打印的数据copy到缓冲里,然后直接返回
单片机再定时检测缓冲是否为空,非空则将内容发送,
缓冲大小需要谨慎选择
举报

黄长梅

2019-5-17 08:27:24
你好,感谢你的回答,我做的思路也是向你说的那样,每个打印任务只负责将数据copy到全局循环缓冲队列,我这里的缓冲定义大小是200,拷贝完毕后,启动串口中断发送;问题是现在这样用,还是会乱码?不知什么原因?如果有空的话麻烦帮忙看看?
举报

李茜

2019-5-17 08:36:29
可能因为读写冲突,读和写同时操作一个缓冲可能会出错,你可以试着用双缓冲,或做读写分离,或者给缓冲区加锁防止写的时候读(或读的时候写)
举报

高文军

2019-5-17 08:44:25
你入队的时候没有考虑入指针追上出指针
举报

更多回帖

发帖
×
20
完善资料,
赚取积分