OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2695|回复: 2

STM32F103 HAL库 ADC采样问题

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2018-12-2
在线时间
3 小时
发表于 2018-12-6 21:54:59 | 显示全部楼层 |阅读模式
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,则结果正常;
      如果不调用这一句,那么结果只有第一次转换正常,后面不正常,且转换五次之后就停止了。 QQ截图20181206215053.png
      我的理解是:我已经设置ADC为不连续模式,转换三次之后自然就停止了,直到我下一次触发他。为什么HAL_ADC_Stop_DMA(&hadc1) 必须调用呢?
      而且第一次结果是正确的,后面开始错误,而且每次刚好运行五次,非常怪异。
      我把工程附在附件里了,F103ZET6的板子,麻烦大神给于解惑! test103_ADC_new.rar (8.91 MB, 下载次数: 42)

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2018-12-2
在线时间
3 小时
 楼主| 发表于 2018-12-6 21:56:05 | 显示全部楼层
我设置的三个通道分别为ADC 1 的 IN 6 7 8。正确电压是2.5 2.8 0.6. 串口第一次输出的结果是正确的。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-12-7 01:38:06 | 显示全部楼层
帮顶
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-22 15:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表