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

怎么实现一个非阻塞性的串口屏收发

云拓海 2019-03-26 浏览量:620
STM32怎么实现一个非阻塞性的串口屏收发
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 可以使用串口的DMA啊,再打开中断,由DMA处理,这样,只要设置好DMA后,启动DMA,会自动收发数据的了,不用你的CPU干预的了

    这样可以相当于非阻塞的了

    • 发布于 2019-03-30
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:4
  • 可以利用dma加串口中断的方式实现非阻塞收发,发送的时候数据放到内存一块地址,dma配置好启动之后就不用管了,可以执行其他任务,

    接收中断就是收到数据直接放到一块内存中,然后dma会产生中断,告诉mcu可以去读取数据了

    • 发布于2019-03-26
    • 举报
    • 评论 0
    • 0
    • 0

  • 需要将接收的数据快速移动到接收数据区去处理,放开串口,让串口继续接收数据或发送数据
    • 发布于2019-03-26
    • 举报
    • 评论 0
    • 0
    • 0

  • 阻塞一般是在主循环中使用时才有用的,在中断中,只要进了中断就进行处理,不进中断就不处理,也没有阻塞的意义了

    在主循环中不阻塞的方式,就是判断有没有接收到串口数据,在没有时,直接返回,而不是使用while等待

    • 发布于2019-03-26
    • 举报
    • 评论 0
    • 0
    • 0

  • 串口上面用DMA就是非阻塞模式,因为DMA的收发由DMA控制器自行操作,不需要依靠CPU,在发送或者接收完成之后,DMA会产生一个中断,也可以CPU隔一段时间去读取一次DMA的状态,看是否收发完成
    • 发布于2019-03-26
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

怎么实现一个非阻塞性的串口屏收发