[STM32F3] NVIC中断优先级设了也没用,是不是还有别的限制?

[复制链接]
796|12
 楼主| 万图 发表于 2025-5-7 07:30 | 显示全部楼层 |阅读模式
我想让USART中断抢占ADC,设了优先级却没反应,是预设组有问题吗?
Clyde011 发表于 2025-5-7 07:33 | 显示全部楼层
你设的是抢占优先级还是响应优先级?
公羊子丹 发表于 2025-5-7 07:34 | 显示全部楼层
是不是NVIC_GROUP设错了?
周半梅 发表于 2025-5-7 07:35 | 显示全部楼层
你看下文档,那几个组挺容易混的。
帛灿灿 发表于 2025-5-7 07:36 | 显示全部楼层
有些中断默认优先级会比你设的还高。
童雨竹 发表于 2025-5-7 07:37 | 显示全部楼层
HAL库设中断优先级时得注意函数调用顺序。
 楼主| 万图 发表于 2025-5-7 07:37 | 显示全部楼层
是不是用的是相同通道?
Wordsworth 发表于 2025-5-7 07:38 | 显示全部楼层
我把一个设成0另一个设1才抢占成功。
Bblythe 发表于 2025-5-7 07:39 | 显示全部楼层
是不是你没启用中断使能?
Pulitzer 发表于 2025-5-7 07:40 | 显示全部楼层
打断点确认哪个先触发的。
Uriah 发表于 2025-5-7 07:41 | 显示全部楼层
Cortex-M的抢占机制挺坑的,要看清文档。
夜阑风雨 发表于 2025-5-12 14:56 | 显示全部楼层
若USART中断的抢占优先级未设置为比ADC中断更高,就无法打断ADC中断。

一秒落纱 发表于 2025-5-12 15:00 | 显示全部楼层
        在STM32F3中设置NVIC中断优先级却未生效,导致USART中断无法抢占ADC中断,可能是由中断优先级分组配置错误、抢占/响应优先级设置不当、中断使能未开启、中断服务函数实现问题或硬件相关配置错误等原因造成的

江河千里 发表于 2025-5-12 15:45 | 显示全部楼层
       如果未显式调用函数设置分组,或设置的优先级分组不合理,就可能导致优先级行为完全失效。

暖了夏天蓝了海 发表于 2025-5-12 17:03 | 显示全部楼层
  抢占优先级决定中断是否可以打断其他正在执行的中断,响应优先级则在具有相同抢占优先级的中断之间确定执行顺序。

三生万物 发表于 2025-5-12 18:21 | 显示全部楼层
   中断服务函数本身实现不当,如未正确清除中断标志位,可能导致中断重复触发或无法正常响应新事件;在中断服务函数内使用阻塞性的延时,或修改全局变量时没有加锁,也会引起意想不到的错误,如中断服务函数执**死或无法正常返回、全局变量的访问被中断打断导致数据错误等。

淡漠安然 发表于 2025-5-12 18:53 | 显示全部楼层
   使用NVIC_PriorityGroupConfig()函数来设置优先级分组,,该函数实质是配置SCB->AIRCR寄存器。

远山寻你 发表于 2025-5-12 19:30 | 显示全部楼层
     如,USART和ADC的外设时钟未开启,或相关的GPIO引脚和中断线未正确配置,也可能导致中断无法正常响应。

光辉梦境 发表于 2025-5-12 21:00 | 显示全部楼层
  即使配置了中断优先级,若未在NVIC中使能USART中断,中断服务函数也不会被触发,从而无法实现抢占。

别乱了阵脚 发表于 2025-5-12 22:00 | 显示全部楼层
    确定优先级分组后,再为USART中断和ADC中断分别设置合适的抢占优先级和响应优先级。例如,设置USART中断的抢占优先级低于ADC中断(数值更小),响应优先级可根据实际情况调整。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

185

主题

6337

帖子

1

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