HAL_ADC_Start_DMA(&hadc1, (uint32_t*)&adcbuf,100);// 打印数据 (平均滤波) HAL_Delay(1000); adcreal[0]=0.0; adcreal[1]=0.0;for(inti=0;i <100; ){ adcreal[0]+= adcbuf[i++]*3.3/4096; adcreal[1]+= adcbuf[i++]*3.3/4096; }printf(" -Channel1:%1.3f\r\n",adcreal[0...
uint16_t ADC_Value=0; uint16_t dong_get_adc(){ //开启ADC1 HAL_ADC_Start(&hadc1); //等待ADC转换完成,超时为100ms HAL_ADC_PollForConversion(&hadc1,100); //判断ADC是否转换成功 if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc1),HAL_ADC_STATE_REG_EOC)){ //读取值 return HAL_ADC_Ge...
1、校准ADC,开启DMA接收,在main函数初始化部分调用 #defineADC_MAX_NUM 5#defineBTN_BUFF_LEN 100staticuint16_t dma_adc_data[BTN_BUFF_LEN * ADC_MAX_NUM]; 1/**2* @brief 校准adc,开启DMA接收3*4*/5voidAdc_Init(void)6{7//校准8HAL_ADCEx_Calibration_Start(&hadc1);9HAL_ADC_Start_DMA(&...
07-ADC读取模拟值 01:05:38 08-DMA读取多通道ADC数值 29:18 09-超声波模块HC-SR04 59:25 HAL库开发STM32,I2C地址扫描器,扫描IIC总线上从机设备地址并串口打印 30:13 HAL库开发STM32,驱动IIC总线LCD1602显示屏,I2C总线使用PCF8574T模块 49:19 HAL库开发STM32,DHT11温湿度传感器,定时器毫秒级延时,STM...
外部触发 可以用定时器去触发ADC进行一次转换 3.5 以多通道 连续转换 寄存器启动为例. 3.6 程序 1.建立数据缓存。 /* USER CODE BEGIN Variables */uint16_tADC_Res[2];/* USER CODE END Variables */ 2.在main.h里增加头文件包含 /* USER CODE BEGIN Includes */ ...
uint32_t ADC1_1, ADC1_2,ADC1_3;//采集的三个通道的ADC uint32_t ADC1_Value[30];//DMA存放数组 uint8_t i; uint8_t ADC1_Flag;//dma采集完毕中断 /* USER CODE END 0 */ 使能ADC传输。 /* USER CODE BEGIN 2 */ HAL_ADC_Start_DMA(&hadc1,(uint32_t*)&ADC1_Value,30); //使...
*/HAL_ADC_Stop_DMA(&hadc1); } }/* USER CODE END 4 */ 测试结果 输入固定电压进行测试。 Normal下测试结果如下。 若不试用关闭DMA的语句HAL_ADC_Stop_DMA(&hadc1); 会造成数据错乱。 Circular可以下可以一直进行采集,不需要HAL_ADC_Stop_DMA(&hadc1)都可。
六、程序完善 1、完善main函数 添加变量 初始化ADC 启动ADC校正和HAL_ADC_Start——DMA启动 ...
l 通道,ADC输入引脚,通常一个ADC控制器控制多个通道,如果需要多通道的话,就得进行每个通道扫描了。 l ADC DMA功能,DMA是内存到内存或内存到存储的直接映射,数据不用经过单片机处理器而直接由硬件进行数据的传递。方便直接将读取的ADC值放到内存变量中。