新手入门
- 积分
- 11
- 金钱
- 11
- 注册时间
- 2018-12-2
- 在线时间
- 3 小时
|
3金钱
各位前辈:
最近开始学习STM32,开发板是原子的精英板103ZET6,再学习ADC的DMA方式采样的时候遇到一个想不明白的问题。
一共设置三组ADC, 扫描模式,不连续模式。
我将ADC的模式设为不连续,每次扫描三组,然后调用 HAL_ADC_Start_DMA(&hadc1, (uint32_t*)&ADC_Value, 3); 进行DMA传输。
在void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) 函数中,如果调用 HAL_ADC_Stop_DMA(&hadc1);先停止ADC,则结果正常;
如果不调用这一句,那么结果只有第一次转换正常,后面不正常,且转换五次之后就停止了。
我的理解是:我已经设置ADC为不连续模式,转换三次之后自然就停止了,直到我下一次触发他。为什么HAL_ADC_Stop_DMA(&hadc1) 必须调用呢?
而且第一次结果是正确的,后面开始错误,而且每次刚好运行五次,非常怪异。
我把工程附在附件里了,F103ZET6的板子,麻烦大神给于解惑!
test103_ADC_new.rar
(8.91 MB, 下载次数: 42)
|
|