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

能帮我理解下这个具体过程吗

FEItwo 2019-05-14 浏览量:504
使用STM32F072 USART单线半双工模式通信,想要利用DMA+IDLE方式接收不定长数据,发现只要打开IDLE中断,就会一直触发IDLE中断。怎么解决,有人说应该清了SR里的IDLE中断标志位, 后再打开IDLE中断,怎么理解?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
所有亮答 数量:4
  • 初始化好后在中断开启前清除一次,然后每次中断结束之前也要清除一次,因为中断就是判断这个标志位进去中断程序的

  • IDLE需要在中断里面再清除标志

    u8 usart1_clear;

    usart1_clear=USART1->SR;
    usart1_clear=USART1->DR;

    就可以用了。这个是接收一帧数据进入中断的。很好用我觉得




  • IDLE在中断里面是需要配置DMA的但是在用之前要把标志清除而且数据要用帧来传输.

  • IDLE中断是串口有收到数据之后连续出现一个字节的空闲就会触发,如果不断触发那就要用逻辑分析仪测一下接收脚上面是否有这种一段一段的数据

    然后IDLE清除需要清除掉SR和DR寄存器

相关问题

问题达人换一批

能帮我理解下这个具体过程吗