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

相关推荐
weixin_4528130910 分钟前
MCU怎么运行深度学习模型
单片机·嵌入式硬件·深度学习
qq_401700411 小时前
STM32开发printf函数支持
stm32
努力做小白2 小时前
4.系统定时器&基本定时器
stm32·单片机·嵌入式硬件
AIGC方案2 小时前
基于STM32F103的智能机械臂识别与控制项目(课件PPT+源代码)
stm32·嵌入式硬件·powerpoint
二块烧肉2 小时前
STM32 CAN总线
stm32·单片机·嵌入式硬件
无垠的广袤3 小时前
Beetle 树莓派RP2350 - 步进电机的 LabVIEW 控制与应用
单片机·嵌入式硬件·labview
小智学长 | 嵌入式3 小时前
单片机-STM32部分:7、GPIO输入 按键
stm32·单片机·嵌入式硬件
逼子格5 小时前
十五种光电器件综合对比——《器件手册--光电器件》
单片机·嵌入式硬件·硬件工程师·led·硬件工程师学习·电路图·光电器件
许有杨8 小时前
STM32的看门狗
stm32·单片机·嵌入式硬件