换通道对应的管脚如下表所示。
管脚名
默认复用功能
PF6
ADC3_IN4
PF7
ADC3_IN5
PF8
ADC3_IN6
PF9
ADC3_IN7
PF10
ADC3_IN8
PC0
ADC123_IN10
PC1
ADC123_IN11
PC2
ADC123_IN12
PC3
ADC123_IN13
PA3
ADC123_IN3
PA6
ADC12_IN6
PA7
ADC12_IN7
PC4
ADC12_IN14
PC5
ADC12_IN15
PB0
ADC12_IN8
PB1
ADC12_IN9
注:
ADC123_IN10
表明
PC0
管脚可以作为
AD1
,
AD2
,
AD3
的第
10
通道。
下面我们将
PC0
配置成
AD1
的通道
10
为例进行讲解。
3.1
首先我们应将
PC0
设置成模拟输入:
#include "adc.h"
/*
为何定义
ADC1_DR_Address
为
((u32)0x40012400+0x4c)
,因为存放
AD
转换结果的寄存器的地址就是
0x4001244c*/
#define
ADC1_DR_Address
((u32)0x40012400+0x4c)
/*
定义变量
ADC_ConvertedValue,
放
AD1
通道
10
转换的数据
*/
__IO uint16_t ADC_ConvertedValue;
static void ADC1_GPIO_Config(void)
{
GPIO_InitTypeDef
GPIO_InitStructure;
/* Enable ADC1 and GPIOC clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1
|
RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 ;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOC, &GPIO_InitStructure);
}