文章目录
基于STM32CubMX和HAL库的外设开发
第六讲 ADC采样
一、 ADC简介
1、什么是ADC?
- 答:ADC即模拟数字转换器(全称:Analog-to-digital converter)
是用于将模拟形式的连续信号转换为数字形式的离散信号的一类设备。
一个模拟数字转换器可以提供信号用于测量。
与之相对的设备成为数字模拟转换器。
2、ADC相关参数
- 转换速度:和时钟有关,但也受硬件控制
- 转换精度:stm32f103最高是12bits
- 转换结果的位置:在一个16位的寄存器里(16>12,因此存在左对齐和右对齐的方式)
- 转换完成的标志:EOC
- 分频参数:要根据ADC转换速度来确定最大值,否则时钟太快容易出现ADC转换失常(通常可以设置为最大分频比,使时钟转化最慢)
二、ADC参数配置
由于ADC有单通道和多通道配置之分,所以我们现在结合**例子(外部电压测量)**来实现ADC的配置
示例1:独立ADC单通道单次转换模式
step1:单通道ADC配置
step2:编写代码
(此处常用函数不再做介绍,同样方法在函数功能adc.c文件下查看功能函数)
分析
目的:实现外部的电压采集并将采集到的电压通过串口输出
/* USER CODE BEGIN Includes */
#include "stdio.h"//用到的sprintf要包含此头文件
#include"string.h"//strlen用到
/* USER CODE END Includes */
uint32_t ret;//定义一个变量用来代替返回值
char str[64];//定义一个数组用来存放返回值
HAL_ADC_Start(&hadc1);//启动ADC1(对应引脚PA5)
HAL_ADC_PollForConversion(&hadc1,HAL_MAX_DELAY);//等待转换
ret=HAL_ADC_GetValue(&hadc1);//得到返回值
sprintf(str,