打印
[STM32G4]

STM32 DMA中断

[复制链接]
1098|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 加油吧!宝宝! 于 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 | 只看该作者
半完成中断是干嘛用的啊

使用特权

评论回复
地板
大鹏2365| | 2024-7-28 23:17 | 只看该作者
DMA(直接存储器访问)控制器的工作机制可能会有些复杂,涉及中断管理时,可能与DMA的配置或中断处理有关。

使用特权

评论回复
5
童雨竹| | 2024-8-16 08:18 | 只看该作者

电路的结构类似于全桥式,只是把其中的两只开关管(T3、T4)换成了两只等值大电容C1、C2。

使用特权

评论回复
6
Wordsworth| | 2024-8-16 09:21 | 只看该作者

通过对于PCB电路板边缘的孔或通孔做电镀石墨化

使用特权

评论回复
7
Clyde011| | 2024-8-16 10:24 | 只看该作者

根据这些指标,测试员可以评估电源的性能和可靠性。

使用特权

评论回复
8
公羊子丹| | 2024-8-16 11:17 | 只看该作者

脉冲变压器磁能被积累的问题容易解决,

使用特权

评论回复
9
万图| | 2024-8-16 12:20 | 只看该作者

在PCB组装过程中通常使用两种类型的技术

使用特权

评论回复
10
Uriah| | 2024-8-16 13:23 | 只看该作者

一般PCB是V-CUT,

使用特权

评论回复
11
帛灿灿| | 2024-8-16 15:19 | 只看该作者

由于共模电流的同向性,会在线圈内产生同向的磁场而增大线圈的感抗

使用特权

评论回复
12
Bblythe| | 2024-8-16 16:22 | 只看该作者

在板的边缘上照常制作整个电镀通孔。

使用特权

评论回复
13
Pulitzer| | 2024-8-16 19:21 | 只看该作者

然后焊接到更大的PCB上

使用特权

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

本版积分规则

7

主题

27

帖子

0

粉丝