STM32H743单片机实现ADC+DMA多通道检测

在stm32cubeMX上配置ADC+DMA实现多通道检测功能

DMA配置

生成代码,HAL_ADC_Start_DMA开始DMA读取ADC值,HAL_ADC_Stop_DMA关闭DMA读取

复制代码
void Start_ADC2_DMA(void) {
	/* 初始化后校准ADC */
	HAL_ADCEx_Calibration_Start(&hadc2, ADC_CALIB_OFFSET, ADC_SINGLE_ENDED); // 执行ADC校准

	/* 启动ADC连续转换(不间断轮询) */
	HAL_ADC_Start_DMA(&hadc2, (uint32_t*)adc2_values, ADC2_CHANNELS);
}

void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc) {
	if (hadc->Instance == ADC2)  // 确认是ADC2的转换完成
	{
		adc_ready |= 0x01; // 标记ADC2数据就绪
		HAL_ADC_Stop_DMA(&hadc2);
	}
}

void AdcTask(void *argument)
{
	Start_ADC2_DMA();
	int i = 0;
	float voltage;
	for (;;) {
		if (adc_ready == 0x01) { // 等待两组ADC数据就绪
			/* 打印ADC2数据 */
			for (i = 0; i < hadc2.Init.NbrOfConversion; i++) {
				voltage = adc2_values[i] * VEF / VEFVALUE;
				printf("ADC2[%d] = %d.%dV\r\n", i, (uint32_t) voltage,
								(uint32_t) (voltage * 100) % 100);
			}
			printf("\n");

			adc_ready = 0; // 清除标志位
		}
		osDelay(100);
	}
}

共勉!!!STM32H743单片机实现ADC+DMA多通道检测+事件组-CSDN博客

相关推荐
创界工坊工作室9 小时前
55-基于STC89C52宠物智能饲喂控制系统设计
stm32·单片机·嵌入式硬件·51单片机·proteus·宠物
极客 - L U12 小时前
卡尔曼滤波从零到精通
c语言·数据结构·单片机·嵌入式硬件·mcu
AMASENSYS艾马斯13 小时前
变频器滤波器选型与EMC合规建议
驱动开发·单片机·其他·硬件工程·精益工程
Zw-awa15 小时前
编译器工具链:GCC、Clang、MSVC、ICC、armclang
stm32
凯基迪科技16 小时前
STM32G系列(G0/G4)芯片解密程序提取RDP读保护解析
网络·stm32·安全
2501_9226395816 小时前
率能半导体 SS6628E直流双向马达驱动芯片:20V/7A,覆盖电子锁、玩具、无线充电、机器人四大应用场景
单片机·嵌入式硬件·硬件工程
硅基造物主16 小时前
STM32 从 0 到 1 做智能家居(五):工程结构与代码骨架
stm32·单片机·嵌入式硬件·智能家居
深圳老胡17 小时前
STM32F103 硬件 SPI 与软件 IO 模拟 SPI 最高速度差异详解
笔记·stm32·单片机·代码规范·1024程序员节
smartpi_ai17 小时前
机芯智能离线语音模块实战问答:SU-03T、CI-03T、SU-63T 与 JX-A7T 高频问题排查
人工智能·单片机·嵌入式硬件·ci/cd·语音识别
2501_9226395817 小时前
率能半导体 SS6635E直流双向马达驱动芯片:30V/4.5A,覆盖电子锁、玩具、无线充电、机器人四大应用场景
单片机·嵌入式硬件·硬件工程