【HAL库】STM32F427ZGTx多通道ADC+DMA方式的【STM32CubeMX】配置及代码实现

在void MX_ADC1_Init(void)函数中添加如下代码:

cpp 复制代码
HAL_ADC_Start_DMA(&hadc1, (uint32_t *)ADC_Value, 3);//开启ADC_DMA//ADC_Value数据缓存buff

在DMA中断中添加如下代码 :

cpp 复制代码
if(__HAL_DMA_GET_FLAG(&hdma_adc1,DMA_FLAG_TCIF0_4 ))//传输完成
{
	g_adc_dma_sta = 1;//标志位置1
//	printf("g_adc_dma_sta = %d\r\n",g_adc_dma_sta);
	__HAL_DMA_CLEAR_FLAG(&hdma_adc1,DMA_FLAG_TCIF0_4 );//清除传输完成标志位
}

ADC数据处理

cpp 复制代码
/* Includes ------------------------------------------------------------------*/
#include "adc_driver.h"

uint16_t ADC_Value[4] = {0};
uint8_t g_adc_dma_sta = 0;

/********************************************************************************************************
*    功能说明: 获取ADC的数据
*    形    参: 无
*    返 回 值: 无
**********************************************************************************************************/
void ADC_GetAdcValues(void)
{

	uint16_t  sum = 0;
	float Vol = 0;
	uint16_t percent = 0;

	if (g_adc_dma_sta == 1)
	{
		for(int j = 0; j < 3; j++) // 遍历3个通道,轮流取值
		{
			sum = 0;
			for(int i = 0; i < 1; i++)
			{
//				printf("****************sum[x] = %d\r\n",ADC_Value[j]);
				sum += ADC_Value[(3 * i) + j]; // 每个通道采集i次数据,进行i次累加
			}
			Vol = (float)sum/4096 * 12.5;
			percent = (float)sum/4096 * 100;
			
//			sum = sum / 10; // 取平均值
			printf("sum[%d] = %d\r\n",j,sum);
			printf("Vol[%d] = %.2f\r\n",j,Vol);
			

		}
//		printf("sum[x] = %d\r\n",sum);
		g_adc_dma_sta = 0;                              // 清除DMA采集完成标志位
//		HAL_ADC_Start_DMA(&hadc1, (uint32_t *)ADC_Value, 4); // 开启下一次ADC和DMA采集
//		HAL_ADC_Start(&hadc1);//
	}
}
相关推荐
国科安芯6 分钟前
AS32A601型MCU芯片如何进行IAP升级?
网络·单片机·嵌入式硬件·安全·risc-v·安全性测试
啃硬骨头9 分钟前
Aurix TC387 Ethernet代码解析之七_MAC的LwIP初始化4
单片机·嵌入式硬件
詩不诉卿1 小时前
超简单stm32cubemx+lwip+yt8512c工程搭建记录
stm32·单片机·嵌入式硬件
亿道电子Emdoor1 小时前
【Arm】MCU和SOC的区别
arm开发·单片机·嵌入式硬件
Vizio<1 小时前
STM32HAL库开发笔记-系统定时器与中断闪灯
笔记·stm32·单片机
纳米软件11 小时前
IGBT模块测试项目集合——纳米软件
单片机·嵌入式硬件·模块测试
单片机系统设计15 小时前
基于STM32的智能台灯系统/智能书桌
stm32·单片机·嵌入式硬件·毕业设计·智能家居
F1331689295715 小时前
5030A 芯片 24V 转 5V 15A 大电流快充选型
网络·单片机·嵌入式硬件·物联网·汽车
恒锐丰小吕16 小时前
无锡黑锋 HF4004 低噪声电荷泵DC-DC转换器技术解析
嵌入式硬件·硬件工程
星一工作室16 小时前
STM32项目分享:基于单片机的智能宠物玩具的设计
stm32·单片机·嵌入式硬件