STM32之ADC的使用

什么是ADC
ADC,即Analog-to-Digital Converter,指模/数转换器或者模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件。可以将真实世界的模拟信号,例如温度、压力、声音或者图像等,转换成更容易储存、处理和发射的数字形式。

一.利用stm32cubeMX勾选ADC1的IN1
这里使用的是stm32g070rb,只有ADC1。然后打开串口,通过串口来看采样数据。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二.编写相关代码
1.先写一个串口发送函数,将采样值通过串口发送出去。
这里并没有使用DMA模式,也没有添加串口重定向函数,直接使用sprintf()函数将采样值储存在uint8_t str_buff[64]中,然后用HAL_UART_Transmit()发送出去(HAL库自带的)。

void UR2_Send_Info()
{
sprintf((char *)str_buff,“采样值:%d, 电压值:%d.%d%dV\r\n”,ADC_Value,ADC_Volt%100,(ADC_Volt%100)/10,ADC_Volt%10);
HAL_UART_Transmit(&huart2,str_buff,sizeof(str_buff),10000);
}

2.再写上AD转换函数
void ADC_Get_Value()
{
HAL_ADC_Start(&hadc1);//开启ADC1
LED_ON();//开灯
if(HAL_ADC_PollForConversion(&hadc1,10) == HAL_OK)//如果ADC收到数据
{
//则将数据获取到并赋给ADC_Value
ADC_Value = HAL_ADC_GetValue(&hadc1);
//将获取到的值转换为电压值
ADC_Volt = ADC_Value * 330 / 4096;
}
UR2_Send_Info();//通过串口发送出去
LED_OFF();//关闭LED
HAL_ADC_Stop(&hadc1);//停止ADC检测
}

3.在主函数中编写代码
只要在大循环中加入下列代码就好
while (1)
{
ADC_Get_Value();
HAL_Delay(2000);
}

三.效果
每测量一次电压值,LED灯就闪烁一次,并且将测量值和转换后的电压值通过串口发送出去。在使用测水位的传感器,测锂电池的电压等场景中使用。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值