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

暗夜精灵 2012-12-04 11:16:32
比如说,我PC和开发板用特定协议通讯,一次发一帧,帧长度不定
单片机在接收到任意一个字节后,如果超过0.5秒无后续数据,则认为是一帧。
目前就想到用定时器,不过芯片上总共才4个定时器,太浪费了,有没有什么好点的办法?
uart有没有超时一类的功能?
...全文
279 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
懒得烧死蛇吃 2012-12-06
  • 打赏
  • 举报
回复
那要看你的开发板是用的什么芯片,有的开发板芯片是有串口超时中断寄存器设置的, 在串口通讯协议中,最好在包中添加包的长度,如果在规定时间内没有读取到指定的长度则认为通信失败,丢弃帧。
sophyyoung 2012-12-06
  • 打赏
  • 举报
回复
原地等待明白的吧:指令延时,for多少次,看期间有没有新字节来,for完还没有新的,那就一帧完了,有新的那就重新for……
sophyyoung 2012-12-06
  • 打赏
  • 举报
回复
定时器不就是拿来用的嘛,都省下来了,谁用啊,该用就用呗。 这个,字节和字节之间,一般除了定时器,还真不好办,而且这是属于通讯的,一般还不好和别人公用,确实挺浪费的。除非如果你能多线程,那你原地等待咯。。。

21,600

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧