本文重点叙述如何使用单片机STM32F103RCT6的ADC外设进行电压采样并通过串口显示。
一、硬件连接
STM32F103RCT6共有三个ADC,本例中使用ADC1(对应数据手册中的ADC123)的通道1进行采样。ADC1的通道1对应的引脚为PA1。
注意:使用ADC采样时,必须要给ADC提供参考电压(即VREF),并且采样电压不可超过3.3V,如果待采样值超过3.3V或者过小,则需要是使用运放将其缩小或放大,为保证ADC被充分利用,待采样的最大值应接近3.3V,使得采样结果更为准确。
二、程序代码(HAL库)
“adc.h”文件
#ifndef __ADC_H
#define __ADC_H#include "./SYSTEM/sys/sys.h"
void adc_init(void); /* ADC初始化 */
u16 get_adc_result(u32 ch); /* 获得通道值 */
u16 get_adc_result_average(u32 ch, u8 times); /* 取平均值 */#endif
“adc.c”文件
#include "adc.h"
#include "./SYSTEM/delay/delay.h"ADC_HandleTypeDef ADC1_Handler;
/******************************* ADC初始化 ***********************************/
void adc_init()
{
RCC_PeriphCLKInitTypeDef ADC_CLKInit; /* 外设时钟初始化结构体 */
ADC_CLKInit.PeriphClockSelection = RCC_PERIPHCLK_ADC; /* 选择ADC时钟 */
ADC_CLKInit.AdcClockSelection = RCC_ADCPCLK2_DIV6; /

最低0.47元/天 解锁文章
4728

被折叠的 条评论
为什么被折叠?



