单通道连续采样
STM32CubeMX配置
按参数配置就好
keil代码编写
定义变量
uint32_t adc_value;
采集
HAL_ADC_Start(&hadc1);
// 等待转换完成
if (HAL_ADC_PollForConversion(&hadc1, 100) == HAL_OK)
{
// 读取转换结果
adc_value = HAL_ADC_GetValue(&hadc1);
adcf= (adc_value/4096.0)*3.3;
printf("ADC value: %f\r\n", adcf);
}
HAL_Delay(1000);
// 停止ADC转换
HAL_ADC_Stop(&hadc1);
0V和3.3V的结果
多通道连续采样
STM32Cubemx配置
下面那里确定好通道
keil代码编写
定义变量
uint32_t adc_values[2];
采集代码
HAL_ADC_Start(&hadc1);
// 等待所有通道转换完成
HAL_ADC_PollForConversion(&hadc1, 100) ;
// 读取每个通道的转换结果
for (i = 0; i <2; i++)
{
adc_values = HAL_ADC_GetValue(&hadc1);
printf("%d+%d\r\n", i, adc_values);
}
// 停止ADC转换
HAL_ADC_Stop(&hadc1);
HAL_Delay(1000); // 延时1秒
结果验证
单通道ADC+DMA采样
STM32Cubemx配置
keil代码编写
定义并且加上去
uint16_t adc_buffer[100];
HAL_ADC_Start_DMA(&hadc1, (uint32_t*)adc_buffer, 100);
uint32_t sum = 0;
uint16_t average;
添加裸机循环
for ( i = 0; i < 100; i++)
{
sum += adc_buffer;
}
average = sum / 100;
printf("%d\r\n",average);
sum = 0;
实现功能
多通道ADC+采样
STM32Cubemx配置
采样时间放长一点,要不然会卡死
keil代码编写
创建存储变量
uint16_t adc_buffer[2];
初始化
HAL_ADC_Start_DMA(&hadc1, (uint32_t*)adc_buffer, 2) ;
采集代码
printf("%d+%d\r\n", adc_buffer[0],adc_buffer[1]);
结果验证
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/m0_74211379/article/details/145409233
|