GD32F350奇怪的uart溢出中断

本来只是设置了RBNE和IDLE中断来接收数据的,奇怪的是接到数据后不停进入中断处理程序,但每次又不是RBNE和IDLE中断,陷入无穷劫,整个工程不能好好走了。。。发个狠,看看到底是谁中断了,于是在中断处理中加了n个

          if( RESET != usart_interrupt_flag_get(USART0, USART_INT_FLAG_XXX)){}

分支一个个来,终于发现是 USART_INT_FLAG_RBNE_ORERR这个玩意起来了。一看,是溢出中断,可是有两个奇怪的地方:(1)USART_INT_FLAG_ERR_ORERR: overrun error interrupt flag  也是溢出中断,两个说明似乎没啥区别,为啥是RB_ORERR? (2)我没有使能这个中断啊,它咋就自己起来了?也许我少见多怪,只是这十几年来,却对这个现象没印象。

        很是讨厌gd的例程了,越来越对付,翻了好几个demo suite,竟然没一个uart用idle中断的例程。。。不过既然出现了,懒得深究,直接在中断处理中加一个分支好了,读其状态,然后clear,搞定:

    else if(usart_interrupt_flag_get(USART0, USART_INT_FLAG_RBNE_ORERR)!=RESET)
    {         
        usart_interrupt_flag_clear(USART0, USART_INT_FLAG_RBNE_ORERR);
    }

        然后,工程正常跑起来了。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值