zl程序教程

您现在的位置是:首页 >  其他

当前栏目

STM32系列(HAL库)——多通道ADC转换+DMA

转换 系列 STM32 HAL ADC DMA 多通道
2023-09-11 14:21:44 时间

 一、前期准备

1、硬件:

  • STM32C8T6最小系统板
  • USB-TTL串口模块
  • ST-Link下载器

2、软件:

  • keil5-IDE
  • cubeMX

 二、cubeMX配置

1、配置RCC——选着外部时钟源

2、配置SYS—— Serial Wire模式 

 3、时钟树拉满72M

  • ADC时钟不能超过14M

 4、配置串口1    

 5、配置DMA

  • 这里只有最后第 6 步需要修改,需要修改为循环模式,如下图

 6、配置ADC

  • 开启扫描、连续模式
  • number of converson 开了几个通道就选几
  • Rank列表下是采样顺序,顺序基于已开启的通道可以自己设定

 7、生成工程

三、keil5代码

1、串口配置

  ②usart.c添加如下代码

#include "stdio.h"
 
int fputc(int ch,FILE *f)
{
	HAL_UART_Transmit (&huart1 ,(uint8_t *)&ch,1,HAL_MAX_DELAY );
	return ch;
}

2、main函数

①添加头文件

#include "stdio.h"

②while(1)前添加

  uint16_t ADC_Value[3];

  HAL_ADCEx_Calibration_Start(&hadc1);    //AD校准
  HAL_ADC_Start_DMA(&hadc1,(uint32_t*)ADC_Value,6);

③while(1)中添加

        char str[64] ;
      sprintf(str,"PA0电压:%.2fV   PA1电压:%.2fV   PA2电压:%.2fV",(ADC_Value[0]*3.3)/4095,(ADC_Value[1]*3.3)/4095,(ADC_Value[2]*3.3)/4095);
      printf("%s\r\n",str) ;
      HAL_Delay(1000) ;

四、效果