STM32F0系列出现overrun interrupt 和PB6 PB7映射的解决办法

最近调试STM32f0系列的MCU,在用到串口1时,遇到2个问题:

1、usart1 映射到PB6、PB7端口,我用的是标准库函数,根据库函数显示 GPIO_AF0和GPIO_AF1都有usart1口的映射,在用到时候到底该怎么选择呢?我没有仔细查看手册,自己做的测试,结果如下:

PA9和PA10 使用的是GPIO_AF_1映射,即GPIO_PinAFConfig(GPIOA,GPIO_Pinsource10,GPIO_AF_1);GPIO_PinAFConfig(GPIOA,GPIO_Pinsource9,GPIO_AF_1);

PB6和PB7 使用的是GPIO_AF_0,即GPIO_PinAFConfig(GPIOA,GPIO_Pinsource6,GPIO_AF_0);GPIO_PinAFConfig(GPIOA,GPIO_Pinsource7,GPIO_AF_0);

2、在使用串口接收中断接收数据的时候,一直会卡死,处在中断中出不来,也查看很多人的总结,确实是ORE中断,这个都是一样,很多人说这个是bug,我不这么认为,ST出的芯片稳定性肯定是非常不错的,我们只是应用,而且用的还不是全部的功能,所以我坚信是自己的问题,怀着这个初心,我做了下面的工作:

1、分析问题造成的原因

当串口接收到数据,产生接收中断的时候,我们的中断服务函数,读取数据;这么看流程是没有问题的,既然产生了ORE错误,说明了什么问题呢?我想应该是读取的速度没有接收的速度快。

解决这个问题就有2个方向:

1、在产生ORE中断的时候,进入中断清楚中断标志位,可以解决卡死的问题。

2、加快接收中断服务函数的读取速度。把接收中断的响应等级提高,我一开始设置的是2,设置到0以后,就不在出现ORE中断错误了。说明分析的没有问题

问题得到完美解决,在此记录,希望群友共同交流!

转载请标记出处。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值