[STM32F4] TIM3中断和DMA冲突导致数据错乱

[复制链接]
864|15
 楼主| Bowclad 发表于 2025-4-21 13:05 | 显示全部楼层 |阅读模式
DM, DMA, TI, AD, ADC
用STM32F407的TIM3触发DMA搬运ADC数据,发现中断服务函数偶尔被跳过。关闭DMA后中断正常,怀疑是优先级冲突,但NVIC优先级分组设为4也无效,是否需要调整DMA请求映射?
香水城 发表于 2025-4-21 14:51 | 显示全部楼层
你说的中断服务函数被跳过是啥意思? 被谁跳过?

系统里开启了哪些中断? DMA的工作往往独立于CPU的。
公羊子丹 发表于 2025-5-27 07:40 | 显示全部楼层
你是不是 TIM3 既用了中断又用了 DMA?我之前也遇到过类似冲突,最后干脆只保留 DMA。
周半梅 发表于 2025-5-27 07:41 | 显示全部楼层
DMA 和 TIM 中断一起用的话,NVIC 优先级确实容易踩坑,你有试过把 DMA 的中断优先级调高一点吗?
帛灿灿 发表于 2025-5-27 07:42 | 显示全部楼层
看起来更像是中断进来了,但中断标志没清掉或者被覆盖,导致下次触发失败。
童雨竹 发表于 2025-5-27 07:43 | 显示全部楼层
建议你把 TIM3 的中断和 DMA 的 NVIC 设置贴出来看看,可能不只是优先级,还有触发顺序问题。
万图 发表于 2025-5-27 07:43 | 显示全部楼层
如果你 DMA 传输完成了再触发中断,那中断服务函数里访问的数据可能已经被覆盖。
Wordsworth 发表于 2025-5-27 07:44 | 显示全部楼层
我记得 TIM3 是支持多个 DMA 请求通道的,要不要换个通道或者切成 TIM2 试试?
Bblythe 发表于 2025-5-27 07:45 | 显示全部楼层
NVIC 分组设成 4 是不是用了 FreeRTOS?要注意系统中断和 DMA 中断的抢占优先级设置是否合理。
Pulitzer 发表于 2025-5-27 07:45 | 显示全部楼层
你有没有试试不开 TIM3 中断,仅用 DMA 的半传输和传输完成中断来判断处理逻辑?
Uriah 发表于 2025-5-27 07:46 | 显示全部楼层
如果 ADC 是连续采样的模式,可能会有数据覆盖问题,建议你 double buffer 配置试试看。
Clyde011 发表于 2025-5-27 07:47 | 显示全部楼层
可以试着在中断服务函数开头打断点确认有没有进来,如果没进,可能真的是 DMA 占了资源。
tpgf 发表于 2025-5-27 13:42 | 显示全部楼层
确保 TIM3、ADC 以及 DMA 相关的引脚连接无误,没有短路或接触不良等问题
elephant00 发表于 2025-5-28 16:36 | 显示全部楼层
检查电源是否稳定,电源不稳定可能导致传输错误。
cr315 发表于 2025-5-28 18:00 | 显示全部楼层
检查DMA配置是否正确。
jcky001 发表于 2025-5-28 18:00 | 显示全部楼层
缓冲区溢出引起的?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

146

主题

2295

帖子

1

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