打印
[STM32F1]

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

[复制链接]
528|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jlyuan|  楼主 | 2021-5-5 21:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教各位,STM32的外设中断与其DMA能否同时起作用?

使用特权

评论回复
沙发
xxrs| | 2021-5-5 21:07 | 只看该作者

然后呢?你是怎么应对这个的呢        

使用特权

评论回复
板凳
jlyuan|  楼主 | 2021-5-5 21:08 | 只看该作者
例如定时器捕获功能,我想让捕获中断与DMA触发同时起作用,可以实现吗?

使用特权

评论回复
地板
jlyuan|  楼主 | 2021-5-5 21:10 | 只看该作者
我测试了一下定时器捕获,发现只要同时使能捕获中断与使能它的DMA,中断服务没有被触发,但DMA可以被触发。

使用特权

评论回复
5
yszong| | 2021-5-5 21:12 | 只看该作者
禁止捕获DMA后,中断又可以被触发了。

使用特权

评论回复
6
zwll| | 2021-5-5 21:16 | 只看该作者
应该是中断源只能用于一种作用吧

使用特权

评论回复
7
juventus9554| | 2021-5-5 21:17 | 只看该作者

如果一个事件既可触发中断又可触发DMA的话,二者是不矛盾的

使用特权

评论回复
8
heweibig| | 2021-5-5 21:24 | 只看该作者
只是平常少有同时用的。

使用特权

评论回复
9
jiajs| | 2021-5-5 21:27 | 只看该作者
但同时用肯定没问题。

使用特权

评论回复
10
zhanghqi| | 2021-5-5 21:31 | 只看该作者
如果你用库函数,基于中断或基于DMA往往是分开的。

使用特权

评论回复
11
jlyuan|  楼主 | 2021-5-5 21:35 | 只看该作者
如果你想二者同时都用,你可以手动调整下。

使用特权

评论回复
12
juventus9554| | 2021-5-5 21:37 | 只看该作者
比方我想开启某个通道比较事件的DMA,同时要用其比较中断:

使用特权

评论回复
13
dingy| | 2021-5-5 21:40 | 只看该作者

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

使用特权

评论回复
14
jlyuan|  楼主 | 2021-5-5 21:42 | 只看该作者
实际测试发现外设中断与DMA都开启的情况下,外设中断服务程序不被触发,DMA功能是正常的,只要关闭DMA,中断服务程序就进去了

使用特权

评论回复
15
wuhany| | 2021-5-5 21:45 | 只看该作者
为什么中断被抑制了

使用特权

评论回复
16
zhanghqi| | 2021-5-5 21:54 | 只看该作者
上面提到的其实我才测试过的代码。

使用特权

评论回复
17
xxrs| | 2021-5-5 21:57 | 只看该作者
INT与DMA本身不冲突,但你要注意会不会DMA中断跟你外设中断发生了竞争。

使用特权

评论回复
18
pengf| | 2021-5-5 21:59 | 只看该作者
应该可以同时用啊

使用特权

评论回复
19
dengdc| | 2021-5-5 22:01 | 只看该作者
当然可以了  只是处理细节上有点麻烦

使用特权

评论回复
20
jlyuan|  楼主 | 2021-5-5 22:06 | 只看该作者

嗯,那我按大家的说法挨个排查一下,谢谢哈

使用特权

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

本版积分规则

880

主题

12030

帖子

4

粉丝