打印

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

[复制链接]
2392|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,看下寄存器,查看下是什么错误!

使用特权

评论回复
5
inurl|  楼主 | 2013-3-4 16:13 | 只看该作者
qiujiahong 发表于 2013-3-4 15:49
没遇到过这样的情况,你可以跟踪下HardFaultException,看下寄存器,查看下是什么错误! ...

这个怎么跟?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

37

主题

293

帖子

1

粉丝