问题:MQX中用read函数读串口时如何做超时机制(已解决)

2020-02-11 10:00发布

本帖最后由 FSL_TICS_ZP 于 2014-6-17 09:10 编辑

我目前在用MQX中的串口,我发现如果用read函数来读取串口数据时,当对方不发数据给串口接收,那么read函数会死等,而且会将CPU占用不放,没有超时机制,而且在线程中死等,别的线程也开启不了,就连想提示一下错误也做不了!怎么样在不改动驱动的情况下,可以让read超时自动跳出啊?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
28条回答
usecool
1楼-- · 2020-02-12 12:39
wangpengcheng 发表于 2014-6-13 15:04
除非改驱动,否则不行,因为只要进入read,没接够数据他就不会退出来,也就是说该任务永远结束不了! ...

改驱动也可以啊,既然都用了,只要有办法解决即可。

MQX也只是很浅显看了下,还没仔细看代码呢。
浪里白条
2楼-- · 2020-02-12 16:09
楼主现在用的哪款芯片来搞MQX啊?
wangpengcheng
3楼-- · 2020-02-12 17:19
浪里白条 发表于 2014-6-13 15:35
楼主现在用的哪款芯片来搞MQX啊?

MK20DN512VLK10
rootxie
4楼-- · 2020-02-12 18:04
 精彩回答 2  元偷偷看……
tkggitfk24
5楼-- · 2020-02-12 22:14
本帖最后由 tkggitfk24 于 2014-6-15 01:21 编辑

如果是polled方式,你肯定要查询有没有数据,没数据来你还死等啊, int方式可以采用事件或者信号量通知task处理,需要修改底层中断ISR, 等待信号量可以加入超时
   
liao-ljj
6楼-- · 2020-02-13 01:26
搞一个信号量,有接收时在read

一周热门 更多>