【嵌入式】 蓝桥杯之ADC

文章介绍了如何通过ADC和DMA技术在微控制器上采集R37和R38两个可调电阻的电压,使用Keil进行编程,并通过HAL_ADC函数启动转换获取数值。采集到的电压数据经过处理后在LCD屏幕上以伏特为单位显示。

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

 ADC功能:
  使用DMA采集R37和R38的电压,由上图可以看出,开发板上有两个可调电阻R37, R38,分别连接到PB15,和PB12。

ADC数据的读取

使用Keil打开刚刚生成的代码,将下列代码粘贴到main.c/* USER CODE BEGIN 0 */ /* USER CODE END 0 */之间

uint16_t getADC1(void) // 获取PB12引脚的电压(对应R38电阻)
{
	uint16_t adc = 0;
	
	HAL_ADC_Start(&hadc1);
	adc = HAL_ADC_GetValue(&hadc1);
	
	return adc;
}

uint16_t getADC2(void) // 获取PB15引脚的电压(对应R37电阻)
{
	uint16_t adc = 0;
	
	HAL_ADC_Start(&hadc2);
	adc = HAL_ADC_GetValue(&hadc2);
	
	return adc;
}

电压数据的显示

main() 的while()中插入如下代码:

char buf[64] = {0};

sprintf(buf , "ADC1(R38): %.2f V", (3.3 * getADC1())/4096);
LCD_DisplayStringLine(Line8, (uint8_t *)buf);

sprintf(buf , "ADC2(R37): %.2f V", (3.3 * getADC2())/4096);
LCD_DisplayStringLine(Line9, (uint8_t *)buf);

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值