新客立减

 

第三章

AD

转换

 

本章的内容分两部分,第一是

AD

的单通道转换,第二是

AD

的多通道转换。

首先先将单通道转换。

 

 

STM32

中自带的

AD

最大的转换频率是

14MHZ

共有

16

个转换通道,

每个转

换通道对应的管脚如下表所示。

 

管脚名

 

默认复用功能

 

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);