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

求助,串口中断问题,实在不明白

你是一只鸟 2018-08-14 浏览量:940
我知道读数可以自动清除 接收中断标志位,实验也成功(串口助手上每发一个数据,单片机发送sssss)
但是,如果我不读数,用清除中断位函数 清除,那么第一次 单片机发送sssss后,串口助手怎么发送数据,单片机也不会发送(感觉像是进入不了接收中断了),我实在不明白,求解释
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 单片机发送,串口发送,是两条通道,双工,两条通道互不影响

    发送完,对方不收,继续发送,前面发送的数据直接被覆盖了,收不到了。收不收都不影响发送

    • 发布于 2018-08-14
    • 举报
    • 评论 0
    • 2
    • 0

其他答案 数量:12
  • STM32的串口,必须要读取DR 和SR里面的内容,否则之后的数据不会被接收

    你这里必须要读一次DR里面的内容

    • 发布于2018-08-14
    • 举报
    • 评论 0
    • 1
    • 0

  • 必须要用中断,在中断服务里处理发过来的数据
    • 发布于2018-08-14
    • 举报
    • 评论 0
    • 1
    • 0

  • 寄存器憋死了,你不取走数据怎么行呢?
    • 发布于2018-08-15
    • 举报
    • 评论 0
    • 0
    • 0

  • stm32是异步全双工通信,发送数据与对方接受不接受关系不大,一直发送数据的话会把原来的给覆盖掉了
    • 发布于2018-08-15
    • 举报
    • 评论 0
    • 0
    • 0

  • 串口有TX. RXl两条通道,互不影响,如果你一端一直发送数据,另一端不收数据,那等缓冲区满了之后就会开始覆盖数据
    • 发布于2018-08-15
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个最好是要用中断去处理,接收和发送的数据直接在寄存器里面读取,但是要注意出中断的时候要清除中断标志位
    • 发布于2018-08-15
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个要分析你具体程序,按理是双工模式的。
    • 发布于2018-08-16
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以用DMA去传输就不会出现这样的情况了,DMA会自动把你的数据放到对应的数组中
    • 发布于2018-08-17
    • 举报
    • 评论 0
    • 0
    • 0

  • STM32是全双工的,发送和接收都没什么影响的,

    单片机串口一直发送,跟对方接不接受是没有关系的,只会吧前面发送的覆盖了。

    • 发布于2018-08-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 最好是用一个中断把数据进行处理,最后处理完数据清除中断标志
    • 发布于2018-08-25
    • 举报
    • 评论 0
    • 0
    • 0

  • stm32串口有数据过来的话必须要访问串口的dr寄存器才可以继续读数据,并且要检测sr寄存器的状态。
    • 发布于2018-08-30
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

求助,串口中断问题,实在不明白