打印
[STM32F4]

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

[复制链接]
488|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 的中断优先级调高一点吗?

使用特权

评论回复
5
帛灿灿| | 2025-5-27 07:42 | 只看该作者
看起来更像是中断进来了,但中断标志没清掉或者被覆盖,导致下次触发失败。

使用特权

评论回复
6
童雨竹| | 2025-5-27 07:43 | 只看该作者
建议你把 TIM3 的中断和 DMA 的 NVIC 设置贴出来看看,可能不只是优先级,还有触发顺序问题。

使用特权

评论回复
7
万图| | 2025-5-27 07:43 | 只看该作者
如果你 DMA 传输完成了再触发中断,那中断服务函数里访问的数据可能已经被覆盖。

使用特权

评论回复
8
Wordsworth| | 2025-5-27 07:44 | 只看该作者
我记得 TIM3 是支持多个 DMA 请求通道的,要不要换个通道或者切成 TIM2 试试?

使用特权

评论回复
9
Bblythe| | 2025-5-27 07:45 | 只看该作者
NVIC 分组设成 4 是不是用了 FreeRTOS?要注意系统中断和 DMA 中断的抢占优先级设置是否合理。

使用特权

评论回复
10
Pulitzer| | 2025-5-27 07:45 | 只看该作者
你有没有试试不开 TIM3 中断,仅用 DMA 的半传输和传输完成中断来判断处理逻辑?

使用特权

评论回复
11
Uriah| | 2025-5-27 07:46 | 只看该作者
如果 ADC 是连续采样的模式,可能会有数据覆盖问题,建议你 double buffer 配置试试看。

使用特权

评论回复
12
Clyde011| | 2025-5-27 07:47 | 只看该作者
可以试着在中断服务函数开头打断点确认有没有进来,如果没进,可能真的是 DMA 占了资源。

使用特权

评论回复
13
tpgf| | 2025-5-27 13:42 | 只看该作者
确保 TIM3、ADC 以及 DMA 相关的引脚连接无误,没有短路或接触不良等问题

使用特权

评论回复
14
elephant00| | 2025-5-28 16:36 | 只看该作者
检查电源是否稳定,电源不稳定可能导致传输错误。

使用特权

评论回复
15
cr315| | 2025-5-28 18:00 | 只看该作者
检查DMA配置是否正确。

使用特权

评论回复
16
jcky001| | 2025-5-28 18:00 | 只看该作者
缓冲区溢出引起的?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

146

主题

2296

帖子

1

粉丝