STM32f103Hal库学习笔记——ADC转换DMA输出

文章目录

  • 前言
  • 一、CubeMX配置
    • 1.ADC配置
    • 2.DMA配置
  • 二、keil代码


前言

因为项目需要用到采集电压,与双舵机电位器的位置输出,所以记录一下速成adc的过程。


一、CubeMX配置

1.ADC配置

STM32f103Hal库学习笔记——ADC转换DMA输出_第1张图片

这里选择3个通道,从上到下配置依次是:
ADC独立模式;
右对齐(adc为14位数据,而寄存器是16位的,所以涉及到左对齐和右对齐);
扫描模式:开(多个通道需要打开,需要把通道数那个设成了比1大的数才能打开);
连续扫描:开;
规则通道:开;
通道数:3;
然后依次设置每一个通道的扫描顺序和采样周期数(转换时间为:(采样周期数+12.5)*(1/adc时钟频率),adc时钟频率不能高于14MHz,且越大采样越不准确)

2.DMA配置

STM32f103Hal库学习笔记——ADC转换DMA输出_第2张图片
打开DMA,传输方向为外设到内存,循环发送,内存地址递增,每个数据大小为半字

二、keil代码

STM32f103Hal库学习笔记——ADC转换DMA输出_第3张图片
然后ADC和DMA就算配置完成了,可以直接调用HAL_ADCEx_Calibration_Start()函数校准ADC,然后调用HAL_ADC_Start_DMA(&hadc1,(uint32_t *)(&adc_data),1)将每时刻DMA收到的ADC数据保存到adc_data数组里面,然后就算完成了。

你可能感兴趣的:(stm32)