
为什么STM32G431的串口用不了2.5M的波特率
STM32L设置CAN一直卡在HAL_CAN_START(),上拉两个引脚依然卡在这里
STM32MP135D的TIM2使用ETR作为外部时钟时,无法使用PE15作为输入
如何利用TIM1触发HRTIM TIMA生成频率为20Hz的100ns脉冲波?
STM32G473RC timer8的CCDS bit, Capture/Compare DMA selection.
FW_H7 V1.12.1-HAL库DMA双缓冲配置
STM32G431 数据手册上有个图有点不理解
stm32f746g-disco开发板的串口通讯连接方式
STM32G473RC多个定时器同步的问题
STM32G070 I2C主机只发送设备地址读测试是否产生stop位
请各位老师指点一下
而只要是中断模式,都会有执行时间的。
一般应用中都还会有很多其他中断的,用DMA模式就可以很好解决这类问题。
可以肯定,低优先级的中断没法抢占高优先级的,注意配置时,优先级越高数字越小。
你如果使用CubeMx配置的话,在NVIC那里就可以看到各个中断优先级 的配置。
当然,在调试环境里也可以查看各中断的优先级。
感谢您的评论,库函数确实是只有抢占的,所以我也只配置了抢占,串口1优先级直接给了0,其他的都非0了。不过还是这个现象
尽管你目前有这个现象,但这个现象并不能说明高优先级中断 能 被低优先级的抢占。
见不到你的具体代码,还是给些建议与你:
一、确认下优先级的配置;
二、确认下在高波特率前提下,UART1的接收是否总是可靠;
三、UART1接收处理代码有无跟其他关联的地方,容易导致处理速度变慢的情形;
四、UART3收发处理代码里有无临时关闭中断的操作;
之前用的G070芯片,串口1和3配置的相同抢占等级而且还不是最高的优先级,没有出现这种现象,现在移植到G0B1上出现了。我拿CUBEMX生成的NVIC部分,也就这两条库函数语句