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博客

相关推荐
Deitymoon3 小时前
STM32——蓝牙模块双串口控制led
stm32·单片机·嵌入式硬件
iCxhust5 小时前
微机原理实践教程(C语言篇)---A001闪烁灯
c语言·开发语言·汇编·单片机·嵌入式硬件·51单片机·微机原理
笨笨饿6 小时前
69_如何给自己手搓一个串口
linux·c语言·网络·单片机·嵌入式硬件·算法·个人开发
FreakStudio10 小时前
MicroPython 内核开发者直接狂喜!这个 Claude 插件市场,把开发全流程做成了「对话式外挂」
python·单片机·嵌入式·面向对象·并行计算·电子diy
m0_3771081413 小时前
5月1日zzz
单片机
踏着七彩祥云的小丑14 小时前
嵌入式——认识电子元器件——晶体谐振器系列
单片机·嵌入式硬件
玩转单片机与嵌入式14 小时前
TinyML应用场景解析:动作识别!
人工智能·单片机·嵌入式硬件·嵌入式ai·ai+嵌入式
xiangw@GZ14 小时前
智能锁TouchKey的抗干扰设计-1.概述
单片机·嵌入式硬件
这波不该贪内存的14 小时前
嵌入式开发避坑指南
单片机·嵌入式硬件