说明一下,使用到的
库函数分布在 stm32f10x_adc.c 文件和 stm32f10x_adc.h 文件中。下面讲解其详细步骤:
1 ) 开启 PA 口和 和 ADC1 时钟,设置 PA1 为模拟输入。
STM32F103RCT6 的 ADC 通道 1 在 PA1 上,所以,我们先要使能 PORTA 的时钟,然后设
置 PA1 为模拟输入。使能 GPIOA 和 ADC 时钟用
RCC_APB2PeriphClockCmd
函数,
设置 PA1
的输入方式,使用 GPIO_Init 函数即可。这里我们列出 STM32 的 ADC 通道与 GPIO 对应表:
2 )复位 ADC1 ,同时设置 ADC1
开启 ADC1 时钟之后,我们要复位 ADC1,将 ADC1 的全部寄存器重设为缺省值之后我们
就可以通过 RCC_CFGR 设置 ADC1 的分频因子。分频因子要确保 ADC1 的时钟(ADCCLK)
不要超过 14Mhz。 这个我们设置分频因子位 6,时钟为 72/6=12MHz,库函数的实现方法是:
RCC_ADCCLKConfig(RCC_PCLK2_Div6);
ADC 时钟复位的方法是:
ADC_DeInit(ADC1);//复位指定的 ADC。
3 )初始化 ADC1 参数,设置 ADC1
在设置完分频因子之后,我们就可以开始 ADC1 的模式配置了,设置单次转换模式、触发
方式选择、 数据对齐方式等都在这一步实现。 同时, 还要设置 ADC1 规则序列的相关信息,
这里只有一个通道,并且是单次转换的,所以设置规则序列中通道数为 1。这些在库函数
中是通过函数 ADC_Init 实现的,下面看其定义:
void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct);
从函数定义可以看出,第一个参数是指定 ADC 号。这里我们来看看第二个参数,跟其他外设
初始化一样,同样是通过设置结构体成员变量的值来设定参数。
typedef struct
{
uint32_t ADC_Mode;
FunctionalState ADC_ScanConvMode;
FunctionalState ADC_ContinuousConvMode;
uint32_t ADC_ExternalTrigConv;
uint32_t ADC_DataAlign;
uint8_t ADC_NbrOfChannel;
}ADC_InitTypeDef;
参数 ADC_Mode 故名是以是用来设置 ADC 的模式。前面讲解过,ADC 的模式非常多,包括独
立模式,注入同步模式等等,这里我们选择独立模式,所以参数为 ADC_Mode_Independent。
参数
ADC