STM32H7系列教程(6)ADC模数转换

文章中若有错误,请在评论区留言,谢谢大家

STM32H7系列教程(6)ADC模数转换

设置STM32cubeMX

这里使用ADC1的17通道
在这里插入图片描述
ADC的时钟频率不超过36MHz
在这里插入图片描述

使用默认设置生成代码

在adc.c文件中添加///或者在main函数下面

/* USER CODE BEGIN 1 */
/**
* @brief 获得 ADC 转换后的结果
* @param ch: 通道值 0~19,取值范围为:ADC_CHANNEL_0~ADC_CHANNEL_17
* @retval 返回值:转换结果
*/
uint32_t adc_get_result(uint32_t ch)
{

 HAL_ADC_Start(&hadc1); /* 开启 ADC */

 return HAL_ADC_GetValue(&hadc1); /* 返回最近一次 ADC1 常规组的转换结果 */
}

uint32_t adc_get_result_average(uint32_t ch, uint8_t times)
{
 uint32_t temp_val = 0;
 uint8_t t;
 for (t = 0; t < times; t++) /* 获取 times 次数据 */
 {
 temp_val += adc_get_result(ch);
 HAL_Delay(10);
 }
 return temp_val / times; /* 返回平均值 */
}

/* USER CODE END 1 */
//在main函数里面添加
//先设置两个变量
	uint16_t adcx;
	float temp;
	
 while (1)
  {
		adcx = adc_get_result_average(ADC_ADCX_CHY, 10);
		temp = (float)adcx * (3.3 / 65536);
		printf("ADC1电压值:%fV\r\n",temp);
		
		HAL_Delay(100);

		
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
    }

将代码上传到开发板

读取光照传感器的电压
请添加图片描述

打开串口获取电压

正常光照条件下
在这里插入图片描述
在强光条件下

在这里插入图片描述
在弱光条件下,电压接近模拟电压
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值