当前位置: 代码迷 >> 驱动开发 >> uart完成类似pc串口的“接收超时”怎么设计比较好
  详细解决方案

uart完成类似pc串口的“接收超时”怎么设计比较好

热度:20   发布时间:2016-04-28 10:30:14.0
uart完成类似pc串口的“接收超时”如何设计比较好?
比如说,我PC和开发板用特定协议通讯,一次发一帧,帧长度不定
单片机在接收到任意一个字节后,如果超过0.5秒无后续数据,则认为是一帧。
目前就想到用定时器,不过芯片上总共才4个定时器,太浪费了,有没有什么好点的办法?
uart有没有超时一类的功能?

------解决方案--------------------
那要看你的开发板是用的什么芯片,有的开发板芯片是有串口超时中断寄存器设置的,
在串口通讯协议中,最好在包中添加包的长度,如果在规定时间内没有读取到指定的长度则认为通信失败,丢弃帧。
------解决方案--------------------
定时器不就是拿来用的嘛,都省下来了,谁用啊,该用就用呗。
这个,字节和字节之间,一般除了定时器,还真不好办,而且这是属于通讯的,一般还不好和别人公用,确实挺浪费的。除非如果你能多线程,那你原地等待咯。。。
------解决方案--------------------
原地等待明白的吧:指令延时,for多少次,看期间有没有新字节来,for完还没有新的,那就一帧完了,有新的那就重新for……