[STM32F1] STM32外设中断与DMA都使能结果

[复制链接]
1769|7
 楼主| aolin 发表于 2019-5-27 09:03 | 显示全部楼层 |阅读模式
请教各位,STM32的外设中断与其DMA能否同时起作用?
例如定时器捕获功能,我想让捕获中断与DMA触发同时起作用,可以实现吗?
我测试了一下定时器捕获,发现只要同时使能捕获中断与使能它的DMA,中断服务没有被触发,但DMA可以被触发。
禁止捕获DMA后,中断又可以被触发了。
谢谢!
buffered 发表于 2019-5-27 16:54 | 显示全部楼层
应该是中断源只能用于一种作用吧
香水城 发表于 2019-5-28 23:24 | 显示全部楼层
如果一个事件既可触发中断又可触发DMA的话,二者是不矛盾的。只是平常少有同时用的。
但同时用肯定没问题。

如果你用库函数,基于中断或基于DMA往往是分开的。如果你想二者同时都用,你可以手动调整下。
比方我想开启某个通道比较事件的DMA,同时要用其比较中断:

        __HAL_TIM_ENABLE_IT(&htim1, TIM_IT_CC1);  //开启通道1的比较中断
HAL_TIM_OC_Start_DMA(&htim1, TIM_CHANNEL_1, (uint32_t *)&pData, 1); //使能通道1比较事件的DMA触发功能

 楼主| aolin 发表于 2019-5-29 17:18 | 显示全部楼层
谢谢版主的回复!
但是实际测试发现外设中断与DMA都开启的情况下,外设中断服务程序不被触发,DMA功能是正常的,只要关闭DMA,中断服务程序就进去了,我也觉得奇怪,为什么中断被抑制了。
香水城 发表于 2019-6-3 12:18 | 显示全部楼层
aolin 发表于 2019-5-29 17:18
谢谢版主的回复!
但是实际测试发现外设中断与DMA都开启的情况下,外设中断服务程序不被触发,DMA功能是正 ...

上面提到的其实我才测试过的代码。
INT与DMA本身不冲突,但你要注意会不会DMA中断跟你外设中断发生了竞争。
 楼主| aolin 发表于 2019-6-12 11:56 | 显示全部楼层
香水城 发表于 2019-6-3 12:18
上面提到的其实我才测试过的代码。
INT与DMA本身不冲突,但你要注意会不会DMA中断跟你外设中断发生了竞争 ...

版主可否给一个完整的DEMO我测试一下,谢谢!
xiaoqizi 发表于 2019-6-17 14:56 | 显示全部楼层
应该可以同时用啊
木木guainv 发表于 2019-6-17 15:01 | 显示全部楼层
当然可以了  只是处理细节上有点麻烦
您需要登录后才可以回帖 登录 | 注册

本版积分规则

101

主题

396

帖子

2

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