• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

如何优化用while的查询阻塞延时

_落雪千寒灬 2018-04-16 浏览量:1055
串口发送会有这样的阻塞延时,发送字节多的时候对系统的实时性影响大,改成中断又不好控制,除了串口发送外,还有些模块也会用这样的查询阻塞延时,有没什么好的方法优化掉 还有大概多长时间的阻塞延时是可以接受的
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 中断好控制呀,其实一直不解的是为啥单片机程序里发送都是用等待,有FIFO的话用中断还是很简单的,我之前用51都是自己先把串口收发改成中断方式,自己建立一个手动的FIFO,做一做这个工作吧,对于编程能力是个提高,也能丰富下对阻塞设备的处理技能,和串口类似的设备很多的。
    • 发布于 2018-04-16
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:11
  • 一般这样的发生程序都会以缓存方式发送吧,就是定义一个标准长度的缓存,每次最多发送这么多,然后等待下次轮询到。
    • 发布于2018-04-16
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以考虑 dma 的方式,需要 cpu 参与的比较少
    • 发布于2018-04-16
    • 举报
    • 评论 0
    • 0
    • 0

  • 使用DMA,在要发送时,配置一下DMA的发送的字节数,DMA发送完成后,不再发送,即DAM设置为手动触发模式
    • 发布于2018-04-16
    • 举报
    • 评论 0
    • 0
    • 0

  • 你不想while等,可以结合定时器来延时,这样就在不用等了
    • 发布于2018-04-16
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以使用DMA,也可以使用嵌入式实时系统,让系统调度,给予重要的任务更高优先级。
    • 发布于2018-04-16
    • 举报
    • 评论 0
    • 0
    • 0

  • 用DMA可以手动控制大不了数据丢失但不会阻塞
    • 发布于2018-04-16
    • 举报
    • 评论 0
    • 0
    • 0

  • 使用DMA,再加上使用DMA中断,就可以达到比较高的实时性了。
    • 发布于2018-04-16
    • 举报
    • 评论 0
    • 0
    • 0

  • 自己定义一个收发缓存吧,这样就好控制了
    • 发布于2018-04-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 还是中断好用点。如果要用while,对收发的计算要精确点,尽量减少无效等待时间;建立收发缓存,不用经常性的去询问。
    • 发布于2018-04-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以中断中只是设置一个标志位,而在while中进行数据处理
    • 发布于2018-04-23
    • 举报
    • 评论 0
    • 0
    • 0

  • 串口发送的话用寄存器方式进行操作会节省很多时钟周期,不过串口发送数据也是需要等待时间的,发送的东西越多等待时间越长,楼主要节省时间就尽量发少一点内容。

    • 发布于2018-04-26
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

如何优化用while的查询阻塞延时