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

stm32f103串口中断偶有卡死问题怎么解决

0f6cc5272481b032 2019-05-08 浏览量:3231
stm32f103串口偶有卡死问题
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 查了若干资料,参考手册,如下:

    1、打开RXNEIE,默认会同时打开RXNE和ORE中断。

    2、必须第一时间清零RXNE,如没及时清零,下一帧数据过来时就会产生Overrun error!

    3、错误就是ORE导致的。

    4、解决办法要清除ORE。

    解决办法:

    void USART2_IRQHandler(void)
    {
      u8 key = 0;
      if(USART_GetITStatus(USART2USART_IT_RXNE)!=Bit_RESET) //检查 USART 是否发生中断
      {
          USART_ClearITPendingBit(USART2USART_IT_RXNE); // 清中断标志
          key=USART_ReceiveData(USART2);
          // save key at here.
      }
      if(USART_GetFlagStatus(USART2USART_FLAG_ORE) == SET) // 检查 ORE 标志
      {
          USART_ClearFlag(USART2USART_FLAG_ORE);
          USART_ReceiveData(USART2);
      }
    }​

    • 发布于 2019-05-08
    • 举报
    • 评论 0
    • 1
    • 0

其他答案 数量:4
  • 1、打开RXNEIE,默认会同时打开RXNE和ORE中断。
    2、必须第一时间清零RXNE,如没及时清零,下一帧数据过来时就会产生Overrun error!
    3、错误就是ORE导致的。
    4、解决办法要清除ORE
    • 发布于2019-05-08
    • 举报
    • 评论 0
    • 1
    • 0

  • 有可能是没有清除错误帧中断,还有就是数据来不及读取完成串口溢出中断没有清除,这两个可能性大一点
    • 发布于2019-05-08
    • 举报
    • 评论 0
    • 1
    • 0

  • 我遇到过中断优先级配置错误出现这种情况的,你查看下你中断优先级是不是配置有问题

    123.jpg

    • 发布于2019-05-08
    • 举报
    • 评论 0
    • 1
    • 0

  • 串口上面,如果使用了接收中断,那应该还有个中断,叫做ORE的,这个中断只是有数据溢出的现象,如果不清除这个中断,就会导致中断多次进入,而造成卡死在中断的假象,清除这个中断的方法是读取DR的数据,同时读走SR寄存器的数据

    要验证这个现象,可以在硬件调试模式下面,查看串口寄存器的情况

    • 发布于2019-05-14
    • 举报
    • 评论 0
    • 1
    • 0

相关问题

问题达人换一批

stm32f103串口中断偶有卡死问题怎么解决