1 | /** Enable peripheral clocks */
|
2 | RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
|
3 | RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
|
4 |
|
5 | ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
|
6 | ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
|
7 | ADC_InitStructure.ADC_ExternalTrigConv = 0;
|
8 | ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
|
9 | ADC_InitStructure.ADC_NbrOfConversion = 1;
|
10 | ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
|
11 | ADC_InitStructure.ADC_ScanConvMode = ENABLE;
|
12 |
|
13 | ADC_CommonInitStructure.ADC_DMAAccessMode = DISABLE;
|
14 | ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent;
|
15 | ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div2;
|
16 | ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_10Cycles;
|
17 |
|
18 | ADC_Init(ADC1, &ADC_InitStructure);
|
19 | ADC_CommonInit(&ADC_CommonInitStructure);
|
20 |
|
21 | ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 1, ADC_SampleTime_112Cycles);
|
22 |
|
23 | ADC_ITConfig(ADC1, ADC_IT_EOC, ENABLE);
|
24 |
|
25 | GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
|
26 | GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
27 | GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
|
28 | GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
|
29 | GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
|
30 | GPIO_Init(GPIOC, &GPIO_InitStructure);
|
31 |
|
32 | NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
|
33 | NVIC_InitStructure.NVIC_IRQChannel = ADC_IRQn;
|
34 | NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
35 | NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
|
36 | NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
|
37 | NVIC_Init(&NVIC_InitStructure);
|
38 | NVIC_EnableIRQ(ADC_IRQn);
|
39 |
|
40 | ADC_Cmd(ADC1, ENABLE);
|