赞
踩
目录
采集5路ADC数据,并用串口printf()函数打印出来。
实验现象:
ADC转换的初始条件:
1、使能
2、触发源条件完成(这个需要自己配置)利用:HAL_ADC_Start_DMA()函数;
ADC中HAL开发优势就是,只需要配置HAL_ADC_Start_DMA()函数,直接可以控制多路ADC转换,非常简单。我们需要的数据,就在此函数的第二个参数中,记得看最下面的源码分析。
DMA转换的初始条件(这三个条件HAL已经帮忙配置完成):
1、使能
2、传输计数器大于1(发送数据寄存器里面有数据)
3、产生触发源条件:使能ADC触发DMA的条件(这个在STM32CubeMx已经帮忙配置完成)
仅仅在初始化代码中,需要调用一个函数启动ADC+DMA转换
函数: HAL_ADC_Start_DMA(&hadc1,(uint32_t*)&AD_Value,5);
参数1:选择ADC
参数2:选择需要存放数据的地址(数组)
1、配置ADC基础配置
2、配置DMA
- uint16_t AD_Value[5];//定义一个数组
-
-
-
- int main(void)
- {
- HAL_Init();
- SystemClock_Config();
-
- MX_GPIO_Init();
- MX_DMA_Init();
- MX_ADC1_Init();
- MX_USART1_UART_Init();
-
- HAL_ADC_Start_DMA(&hadc1,(uint32_t*)&AD_Value,5);
-
- while (1)
- {
- printf("ADC0:%d\r\n",AD_Value[0]);
- printf("ADC1:%d\r\n",AD_Value[1]);
- printf("ADC2:%d\r\n",AD_Value[2]);
- printf("ADC3:%d\r\n",AD_Value[3]);
- printf("ADC4:%d\r\n",AD_Value[4]);
- printf("\r\n");
- HAL_Delay(1000);
-
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。