STM32CubeMX使用之DMA方式使用ADC

Posted 何事误红尘

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32CubeMX使用之DMA方式使用ADC相关的知识,希望对你有一定的参考价值。

一、概述

本文记录下ADC的使用过程,主要是后续使用,能有个参考。
芯片: STM32G0B1RCT6

二、Pinout&Configuration

2.1 选择端口



2.2 开启DMA中断

三、测试ADC

测试代码可参考demo工程,同样是DMA方式:

主要步骤为:

  1. 定义采集值缓存
  2. 开启ADC校准
  3. 开启DMA功能*。
  4. 主循环内重复开启ADC转换并打印采集结果:
  5. 发现打印结果如下,每次只转换了一个通道:

    开启ADC后1S还不够采集完成吗?
  6. 回到demo中查看,是在回调函数中设置标志,然后在主循环中判断标志才进行打印。

    修改后果然正常了:

    这样看来每次开启ADC,只转换了一个通道。CubeMX设置有些问题。使能了scan扫描模式,应该会转换完所有通道吧?回头再看下。

注意:HAL_ADC_Start_DMA后,不要使用立即调用HAL_ADC_Start。

2021-12-9补充:

  1. 前面混合使用了HAL_ADC_Start_DMA和HAL_ADC_Start,是有些问题的。可以只使用HAL_ADC_Start_DMA,但要注意,不能重复调用,每次转换完要先使用HAL_ADC_Stop_DMA关闭。

  2. 修改cube设置

    转换完所有通道后关闭ADC。

以上是关于STM32CubeMX使用之DMA方式使用ADC的主要内容,如果未能解决你的问题,请参考以下文章

STM32CubeMX使用之ADC

STM32HAL ADC+TIM+DMA采集交流信号 基于cubemx

利用STM32CubeMX来生成USB_HID_Mouse工程添加ADC非dma和中断方式

stm32cubemx ADC+TIM+DMA超频采样

stm32cubemx ADC+TIM+DMA超频采样

STM32HAL ADC+TIM+DMA采集交流信号 基于cubemx