USART在关RXNE的情况下,继续收数据STM32会挂掉

[复制链接]
2807|4
 楼主| inurl 发表于 2013-3-4 08:38 | 显示全部楼层 |阅读模式
本帖最后由 inurl 于 2013-3-4 10:22 编辑

1、 需要暂时关USART中断,使用 USART_ITConfig(USART1, USART_IT_RXNE, DISABLE); 配置RXNE为关。 然后串口继续有数据发过来。
2、在INT接收函数里面会进ORE溢出中断:
          if ( USART_GetFlagStatus ( USART3, USART_FLAG_ORE ) != RESET )
        {
            USART_ReceiveData ( USART3 );
         }

3、但是如果数据很频繁的话,STM32直接挂掉,会进HardFaultException异常。
      HardFaultException
              B       HardFaultException


已经确定了问题所在,如果注释掉USART_ITConfig(USART1, USART_IT_RXNE, DISABLE);的话,就不会出此问题。
但是如果数据不频繁的话,就不会进HardFaultException。请高手指导下!!!!
uet_cache 发表于 2013-3-4 10:12 | 显示全部楼层
如果不用中断函数,就需要在其它地方判断数据接收情况,至少在有数据的时候,读取并清标志还是有必要的。会出现上面的问题很正常。至少告诉你,系统需要完善修改。。。
 楼主| inurl 发表于 2013-3-4 11:14 | 显示全部楼层
uet_cache 发表于 2013-3-4 10:12
如果不用中断函数,就需要在其它地方判断数据接收情况,至少在有数据的时候,读取并清标志还是有必要的。会 ...

这。。。。 不正常吧, 我已经清了ORE中断了 , 怎么还会产生硬件错误呢?
qiujiahong 发表于 2013-3-4 15:49 | 显示全部楼层
没遇到过这样的情况,你可以跟踪下HardFaultException,看下寄存器,查看下是什么错误!
 楼主| inurl 发表于 2013-3-4 16:13 | 显示全部楼层
qiujiahong 发表于 2013-3-4 15:49
没遇到过这样的情况,你可以跟踪下HardFaultException,看下寄存器,查看下是什么错误! ...

这个怎么跟?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

37

主题

293

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部