[STM32G4] STM32 DMA中断

[复制链接]
1807|14
 楼主| 加油吧!宝宝! 发表于 2023-11-27 16:04 | 显示全部楼层 |阅读模式
本帖最后由 加油吧!宝宝! 于 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传输功能。
651866567febea12cf.png

Undshing 发表于 2023-11-30 16:39 来自手机 | 显示全部楼层
半完成中断是干嘛用的啊
大鹏2365 发表于 2024-7-28 23:17 | 显示全部楼层
DMA(直接存储器访问)控制器的工作机制可能会有些复杂,涉及中断管理时,可能与DMA的配置或中断处理有关。
童雨竹 发表于 2024-8-16 08:18 | 显示全部楼层

电路的结构类似于全桥式,只是把其中的两只开关管(T3、T4)换成了两只等值大电容C1、C2。
Wordsworth 发表于 2024-8-16 09:21 | 显示全部楼层

通过对于PCB电路板边缘的孔或通孔做电镀石墨化
Clyde011 发表于 2024-8-16 10:24 | 显示全部楼层

根据这些指标,测试员可以评估电源的性能和可靠性。
公羊子丹 发表于 2024-8-16 11:17 | 显示全部楼层

脉冲变压器磁能被积累的问题容易解决,
万图 发表于 2024-8-16 12:20 | 显示全部楼层

在PCB组装过程中通常使用两种类型的技术
Uriah 发表于 2024-8-16 13:23 | 显示全部楼层

一般PCB是V-CUT,
帛灿灿 发表于 2024-8-16 15:19 | 显示全部楼层

由于共模电流的同向性,会在线圈内产生同向的磁场而增大线圈的感抗
Bblythe 发表于 2024-8-16 16:22 | 显示全部楼层

在板的边缘上照常制作整个电镀通孔。
Pulitzer 发表于 2024-8-16 19:21 | 显示全部楼层

然后焊接到更大的PCB上
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

27

帖子

0

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