CubeMX配置
配置引脚
![](https://tumytime.github.io/picx-images-hosting/image.2h82d2oxha.webp)
我们这里先只用R37
配置PB15
为ADC2_IN15
![](https://tumytime.github.io/picx-images-hosting/image.6t6vkmcqb6.webp)
选择Single_ended
生成工程
点击右上角”GENERATE CODE”,生成工程
代码
aadc.c
1 |
|
aadc.h
1 |
|
这个函数 getADC
是一个用于从ADC(模拟到数字转换器)读取模拟信号并将其转换为电压值的函数。让我们一步步地分析这个函数:
- 函数签名:
1 | double getADC(ADC_HandleTypeDef *pin) |
double
: 函数的返回类型是double
,这意味着它将返回一个浮点数。ADC_HandleTypeDef *pin
: 函数接受一个指向ADC_HandleTypeDef
类型的指针,这个指针指向一个ADC句柄,它包含了ADC的配置信息和状态信息。
- 函数体:
1 | { |
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位)来计算的。