蓝桥杯嵌入式Stm32G431rbt6学习笔记------ADC篇

测试平台:STM32G431RBT6

ADC即模拟数字转换器,ADC英文全称(Analog-to-digital converter), 是一种用于将模拟电压的连续信号转换为离散的数字信号。 就比如我们可以将我们生活中的温度、压力、声音这样的模拟信号通过ADC转化为我们可以通过单片机处理的数字信号。

目录

电路原理

CubeMX配置

keil工程

代码

电路原理

STM32G431内部集成2个最高12位的ADC(ADC1,ADC2)

12位的ADC即 0  ~  2^12  -  1  =  0  ~  4095

实现原理:读到的值 X / 4096 * 3.3V(板载电压)

R37与R38为旋转电位器,通过旋转电阻从而将电阻分压值从GND到VDD变化

J11与J12为跳帽

CubeMX配置

将两路ADC设置为单端模式

Differential:差分模式:对读取电压求差

Single-ended:单端模式:直接读取所接的一个电压

keil工程

打开keil后若编译报错

打开

再次打开

 

再前往

看到

将ADC定义注释取消(同理,若使用其他功能取消注释即可)

 在系统时钟初始化中

将模版中

分别复制到keil工程adc.c中

将adc.c中初始化在主函数中声明 

代码

全局变量

u16 ADC1_Value;
u16 ADC2_Value;
float vol_rot38;
float vol_rot37;

循环中:

  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
    KEY_Process();
    HAL_ADC_Start (&hadc1);
    ADC1_Value = HAL_ADC_GetValue (&hadc1);   //1
    vol_rot38 = ADC1_Value/4095.0f*3.3f;      //2
    HAL_ADC_Start (&hadc2);
    ADC2_Value = HAL_ADC_GetValue (&hadc2);
    vol_rot37= ADC2_Value/4095.0f*3.3f;
  }
  /* USER CODE END 3 */
}

HAL_ADC_Start();          打开ADC函数

HAL_ADC_GetValue();   读取ADC函数

hadc1定义在adc.h中为ADC处理函数

循环中1:读取ADC的数值

循环中2:读取ADC的电压值

开启仿真调试,在监视窗口中通过旋转电位器可以检测ADC数值的变化

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值