[STM32C0] NVIC优先级设对了中断为什么还是串着进?

[复制链接]
525|13
 楼主| Bblythe 发表于 2025-5-4 07:17 | 显示全部楼层 |阅读模式
两个外设优先级不一样,但触发后像是排队处理的,这是正常的吗?
Clyde011 发表于 2025-5-4 07:20 | 显示全部楼层
有些芯片支持优先级位数比较少,要注意。
公羊子丹 发表于 2025-5-4 07:20 | 显示全部楼层
可能设置的是响应优先级不是抢占。
周半梅 发表于 2025-5-4 07:21 | 显示全部楼层
你是不是没使能中断嵌套?
帛灿灿 发表于 2025-5-4 07:22 | 显示全部楼层
优先级位数配置错了我也碰过。
童雨竹 发表于 2025-5-4 07:23 | 显示全部楼层
看下__NVIC_SetPriority那段有没有被覆盖。
万图 发表于 2025-5-4 07:24 | 显示全部楼层
有用FreeRTOS吗?RTOS会改优先级规则。
Wordsworth 发表于 2025-5-4 07:25 | 显示全部楼层
不同中断源共用IRQ也会串。
 楼主| Bblythe 发表于 2025-5-4 07:26 | 显示全部楼层
HAL库可能默认值改了中断响应。
Pulitzer 发表于 2025-5-4 07:26 | 显示全部楼层
抢占优先级设0也不一定先响应。
Uriah 发表于 2025-5-4 07:27 | 显示全部楼层
要不要发下你NVIC相关的代码?
夜阑风雨 发表于 2025-5-14 14:29 | 显示全部楼层
STM32C0NVIC支持抢占优先级和子优先级,但若未正确配置优先级分组,抢占优先级可能无法发挥作用。例如,若将优先级分组设置为“所有4位用于子优先级”,则中断无法嵌套,只能按顺序执行

暖了夏天蓝了海 发表于 2025-5-14 14:29 | 显示全部楼层
即使配置了优先级,若未通过NVIC_EnableIRQ()使能中断,或未清除中断挂起标志(如通过NVIC_ClearPendingIRQ()),可能导致中断无法及时响应

三生万物 发表于 2025-5-14 14:35 | 显示全部楼层
验证中断使能与标志清除,确保中断已通过NVIC_EnableIRQ()使能,并在ISR中清除中断标志。

光辉梦境 发表于 2025-5-14 16:00 | 显示全部楼层
若中断服务函数(ISR)未及时清除中断标志(如未清除USARTRXNE标志或EXTIPR标志),可能导致中断反复触发或无法退出,影响其他中断的响应。

淡漠安然 发表于 2025-5-14 16:30 | 显示全部楼层
系统时钟或总线阻塞,若系统时钟配置不当(如主频过低)或总线被高优先级外设阻塞(如DMA传输占用总线),可能导致低优先级中断被延迟处理,表现为“排队”现象。

一秒落纱 发表于 2025-5-14 17:00 | 显示全部楼层
硬件资源冲突,若两个中断共享同一硬件资源(如同一GPIO引脚被多个外设复用),可能导致中断触发条件冲突,影响中断响应顺序。

远山寻你 发表于 2025-5-14 17:40 | 显示全部楼层
确保通过NVIC_SetPriorityGrouping()正确配置优先级分组。

江河千里 发表于 2025-5-14 22:02 | 显示全部楼层
确保ISR执行时间尽可能短,避免长时间占用CPU。复杂逻辑可交由主循环或任务调度器处理。

别乱了阵脚 发表于 2025-5-14 22:40 | 显示全部楼层
检查系统时钟与总线配置,确认系统时钟(HCLKPCLK)配置正确,且总线未被高优先级外设阻塞。可通过调试工具(如逻辑分析仪)监控中断触发与响应时间

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

本版积分规则

145

主题

5767

帖子

1

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