打印
[STM32G4]

STM32 DMA中断

[复制链接]
548|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 加油吧!宝宝! 于 2023-11-28 09:25 编辑

#STM32# #DMA# 芯片型号:STM32G473RET6,开发环境:STM32CubeMX+Keil(LL库)。
使用DMA1通道1,在半传输中断和完全传输中断里,拷贝ADC采集的数据。
发现半传输中断和完全传输中断不能独立使用。
具体体现在:
1、在DMA1初始化时,打开了半传输中断,关闭完全传输中断,照样能触发完全传输中断
LL_DMA_EnableIT_HT(DMA1,LL_DMA_CHANNEL_1);//打开DMA1半传输中断
LL_DMA_DisableIT_TC(DMA1,LL_DMA_CHANNEL_1);//关闭DMA1完全传输中断
2、在DMA1初始化时,关闭了半传输中断,打开完全传输中断,照样能触发半传输中断
LL_DMA_EnableIT_TC(DMA1,LL_DMA_CHANNEL_1);//打开DMA1完全传输中断
LL_DMA_DisableIT_HC(DMA1,LL_DMA_CHANNEL_1);//关闭DMA1半传输中断

这个问题困扰了我很久,麻烦各位大神指点迷津。

使用特权

评论回复
沙发
香水城| | 2023-11-30 11:17 | 只看该作者

你这个问题估计你代码方面的问题。

提醒你一下,你如果想修改DMA的传输中断使能位,得先保证相应DMA通道的使能位为0。

使用LL库的话,可以调用LL_DMA_DisableChannel(DMA_TypeDef *DMAx, uint32_t Channel);来将相应DMA通道控制寄存器里的EN清零。当你修改完TC/HT使能位后

再调用LL_DMA_EnableChannel(DMA_TypeDef *DMAx, uint32_t Channel); 来恢复DMA传输功能。


使用特权

评论回复
板凳
Undshing| | 2023-11-30 16:39 | 只看该作者
半完成中断是干嘛用的啊

使用特权

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

本版积分规则

7

主题

27

帖子

0

粉丝