打印
[应用相关]

__HAL_DMA_GET_FLAG(&hdma_adc1,DMA_FLAG_TC1)始终返回零

[复制链接]
652|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
powerantone|  楼主 | 2024-7-18 09:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ge, hd, AMP, tc, AG, ADC1
HAL_ADC_Start_DMA(&hadc1, (uint32_t )gs_adwAdcSampleValue, FILTERLENGTH ADC_CHANNEL_NUM); if(HAL_DMA_GET_FLAG(&hdma_adc1,DMA_FLAG_TC1)) { HAL_DMA_CLEAR_FLAG(&hdma_adc1,DMA_FLAG_TC1); } else { return; }

原本ADC采样是正常的,加上这段代码后一直不走上面的分支,没法采样了。请问是什么问题?

使用特权

评论回复
沙发
初级工程渣| | 2024-7-26 13:40 | 只看该作者
DMA 启动时机:
HAL_ADC_Start_DMA() 函数启动 DMA 数据传输。你在启动 DMA 后立即检查 DMA 标志,可能会出现问题,因为 DMA 传输还没有完成。因此,DMA 标志可能尚未被设置。

使用特权

评论回复
板凳
初级工程渣| | 2024-7-26 13:41 | 只看该作者
应在 DMA 传输完成的回调函数中检查标志,而不是在启动 DMA 后立即检查。DMA 完成标志通常在传输完成时由 DMA 中断或 DMA 完成回调函数处理。

使用特权

评论回复
地板
初级工程渣| | 2024-7-26 13:41 | 只看该作者
使用 DMA 完成回调函数:
使用 DMA 完成回调函数来处理 DMA 完成事件,确保你在 DMA 传输完成时才执行相关操作。你可以重写 HAL_ADC_ConvCpltCallback() 回调函数来处理采样完成的操作。

c

void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) {
    // 处理 ADC 完成后的操作
    // 比如,你可以在这里检查数据或进行其他操作
}

使用特权

评论回复
5
失物招領| | 2024-8-22 10:00 | 只看该作者
在STM32中使用HAL库进行ADC采样并通过DMA传输数据时,可能会遇到一些问题。您提供的代码片段中,有一些潜在的问题需要注意:如DMA的配置等

使用特权

评论回复
6
她已醉| | 2024-8-22 12:00 | 只看该作者
DMA_FLAG_TC1 是传输完成标志位。确保这个标志位在您的DMA配置中是正确的。

使用特权

评论回复
7
将爱藏于深海| | 2024-8-22 14:00 | 只看该作者
检查DMA的标志位是否正确清除。

使用特权

评论回复
8
春日负喧| | 2024-8-22 16:00 | 只看该作者
看看ADC是否已经正确配置,并且与DMA通道相关联。检查ADC的采样时间、分辨率等参数是否正确设置。

使用特权

评论回复
9
故意相遇| | 2024-8-22 18:00 | 只看该作者
在调用 HAL_ADC_Start_DMA 之前,ADC和DMA都已经初始化并且处于就绪状态。

使用特权

评论回复
10
白马过平川| | 2024-8-22 22:00 | 只看该作者
检查是否有其他代码逻辑干扰了DMA的传输。

使用特权

评论回复
11
风凉| | 2024-8-23 02:00 | 只看该作者
如果使用了中断,确保DMA中断处理函数正确配置,并且在中断服务例程中正确处理DMA标志位。

使用特权

评论回复
12
温室雏菊| | 2024-8-23 04:00 | 只看该作者
HAL_DMA_GetFlagStatus 和 HAL_DMA_ClearFlag 是HAL库中用于获取和清除DMA标志位的函数。

使用特权

评论回复
13
西洲| | 2024-8-23 10:00 | 只看该作者
一般来说, FILTERLENGTH 和 ADC_CHANNEL_NUM 的乘积不会超过DMA缓冲区的大小。

使用特权

评论回复
14
捧一束彼岸花| | 2024-8-23 14:00 | 只看该作者
确保 gs_adwAdcSampleValue 是一个有效的指针,并且指向足够大的内存区域来存储ADC采样数据。

使用特权

评论回复
15
梵蒂冈是神uy| | 2024-8-23 14:38 | 只看该作者
如果你的代码依赖于 DMA 传输完成中断(比如 HAL 库的 HAL_ADC_ConvCpltCallback),确保中断服务例程正确处理 DMA 完成中断,并清除标志。

使用特权

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

本版积分规则

549

主题

2367

帖子

4

粉丝