蓝桥杯stm32学习笔记(八):模数转换ADC
Published in:2024-03-18 | category: 嵌入式
Words: 476 | Reading time: 1min | reading:

CubeMX配置

配置引脚

我们这里先只用R37

配置PB15ADC2_IN15

选择Single_ended

生成工程

点击右上角”GENERATE CODE”,生成工程

代码

aadc.c

1
2
3
4
5
6
7
8
9
10
11
#include "aadc.h"


double getADC(ADC_HandleTypeDef *pin)
{
uint adc;
HAL_ADC_Start (pin);
adc = HAL_ADC_GetValue(pin);
return adc*3.3/4096;
}

aadc.h

1
2
3
4
#include "main.h"

double getADC(ADC_HandleTypeDef *pin);

这个函数 getADC 是一个用于从ADC(模拟到数字转换器)读取模拟信号并将其转换为电压值的函数。让我们一步步地分析这个函数:

  1. 函数签名:
1
double getADC(ADC_HandleTypeDef *pin)
  • double: 函数的返回类型是double,这意味着它将返回一个浮点数。
  • ADC_HandleTypeDef *pin: 函数接受一个指向ADC_HandleTypeDef类型的指针,这个指针指向一个ADC句柄,它包含了ADC的配置信息和状态信息。
  1. 函数体:
1
2
3
4
5
6
{
uint adc;
HAL_ADC_Start (pin);
adc = HAL_ADC_GetValue(pin);
return adc*3.3/4096;
}
  • uint adc;: 定义了一个无符号整数变量adc,用于存储从ADC读取的原始值。
  • HAL_ADC_Start (pin);: 调用HAL库(硬件抽象层库)中的HAL_ADC_Start函数来启动指定的ADC。这个函数接受一个ADC句柄(即pin)作为参数。
  • adc = HAL_ADC_GetValue(pin);: 在ADC转换完成后,调用HAL_ADC_GetValue函数来获取转换后的ADC值,并将其存储在adc变量中。
  • return adc*3.3/4096;: 返回转换后的电压值。这里假设ADC是一个12位的ADC(因此最大值是4095或4096,取决于具体的实现和计数方式),其参考电压是3.3V。因此,adc*3.3/4096这个公式将ADC的原始读数转换成了相应的电压值。

总之,这个函数的主要目的是从指定的ADC读取模拟信号,并将其转换为一个表示电压的浮点数。这个电压值是基于ADC的参考电压(在这个例子中是3.3V)和ADC的位数(在这个例子中是12位)来计算的。

Prev:
残差网络
Next:
蓝桥杯stm32学习笔记(七):输入捕获(频率,占空比测量)