【蓝桥杯物联网赛项学习日志】Day6 关于ADC

本文介绍STM32L071KBU3微控制器的ADC模块配置过程及其简单的应用实例。通过逐次逼近型ADC实现模拟信号到数字信号的转换,并详细展示了配置步骤与代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ADC可不是射手,他是模拟量转换为数字量的通道。 ADC(analog to digital converter)即模数转换器,它可以将模拟信号转换为数字信号。按照其转换原理主要分为逐次逼近型、双积分型、电压频率转换型三种。STM32L071KBU3属于逐次逼近型。细细研究下来,这一部分也有很多让人眼前一亮的知识,而在这,我就只总结下adc的简单配置及取值显示出来。

配置

配置说明

 1.选择IN8,IN9两个adc通道,这两个通道对应的引脚是PB0,PB1;
 2.配置ADC的数据分辨率为12 bit(可配置 12 位、10 位、8 位或 6 位分辨率);
 3.使能Low Power Auto Wait 低功耗自动等待

这样ADC在cube中就配置好了

代码应用

初始化

1.初始化代码中打开adc自动校准

	HAL_ADCEx_Calibration_Start(&hadc,ADC_SINGLE_ENDED);

2.增加底层转换函数

void ADC_Read(uint16_t *ADC_Data)
{
	HAL_ADC_Start(&hadc);
	if(HAL_ADC_PollForConversion(&hadc,10) == HAL_OK)
		ADC_Data[0] = HAL_ADC_GetValue(&hadc);
    if(HAL_ADC_PollForConversion(&hadc,10) == HAL_OK)
		ADC_Data[1] = HAL_ADC_GetValue(&hadc);
}

3.在主函数中调用显示

int main(void)
{
  HAL_Init();

  SystemClock_Config();

  MX_GPIO_Init();
  MX_ADC_Init();
  MX_I2C3_Init();

  OLED_Init();
	
  while (1)
  {
    HAL_Delay(100);
	ADC_Read(usAdc);
	sprintf((char *)ucBuf,"%04u %4.2fV %02u",usAdc[1],usAdc[1]*3.3/4095,COUNT);
	OLED_ShowString(0,0,ucBuf,16);
	sprintf((char *)ucBuf,"%04u %4.2fV",usAdc[0],usAdc[0]*3.3/4095);
	OLED_ShowString(0,2,ucBuf,16);
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值