1 | RCC_ADCCLKConfig(RCC_PCLK2_Div6);
|
2 |
|
3 | RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
|
4 |
|
5 | ADC_DeInit(ADC1);
|
6 |
|
7 | ADCInit.ADC_Mode = ADC_Mode_Independent;
|
8 | ADCInit.ADC_ScanConvMode = ENABLE;
|
9 | ADCInit.ADC_ContinuousConvMode = ENABLE;
|
10 | ADCInit.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
|
11 | ADCInit.ADC_DataAlign = ADC_DataAlign_Right;
|
12 | ADCInit.ADC_NbrOfChannel = 4;
|
13 | ADC_Init(ADC1, &ADCInit);
|
14 |
|
15 | ADC_RegularChannelConfig(ADC1, ADC_Channel_12, 1,
|
16 | ADC_SampleTime_239Cycles5);
|
17 | ADC_RegularChannelConfig(ADC1, ADC_Channel_13, 2,
|
18 | ADC_SampleTime_239Cycles5);
|
19 | ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 3,
|
20 | ADC_SampleTime_239Cycles5);
|
21 | ADC_RegularChannelConfig(ADC1, ADC_Channel_15, 4,
|
22 | ADC_SampleTime_239Cycles5);
|
23 |
|
24 | ADC_Cmd(ADC1, ENABLE);
|
25 | ADC_DMACmd(ADC1, ENABLE);
|
26 |
|
27 | ADC_ResetCalibration(ADC1);
|
28 | while (ADC_GetResetCalibrationStatus(ADC1))
|
29 | ;
|
30 |
|
31 | ADC_StartCalibration(ADC1);
|
32 | while (ADC_GetCalibrationStatus(ADC1))
|
Hallo zusammen, obigen Code möchte ich gerne mal auf Registerbene
umsetzen. Bisher habe ich folgende Zeilen geschafft, allerdings weiß ich
nun nicht mehr weiter.
1 | //ADC1
|
2 | SYSCTRL_RCC_APB2 |= (1uL << SYSCTRL_ADC1_BIT);
|
3 | /* ADC1 Reset */
|
4 | RCC->APB2RSTR |= (1<<9);
|
5 | RCC->APB2RSTR &=~ (1<<9);
|
6 |
|
7 | RCC->CFGR&=~(3<<14);
|
8 | RCC->CFGR |= (2<<14);
|
9 | /* Scan mode enabled */
|
10 | ADC1->CR1 |= (1 << 8);
|
11 | /* Independent Mode */
|
12 | ADC1->CR1 &=~ (15 << 16);
|
13 | /* 4 Channels */
|
14 | ADC1->CR1 |= (3 << 1);
|
15 | /* Data alignment right & non external trigger*/
|
16 | ADC1->CR2 &=~ (17 << 11);
|
17 | /* Channel + sample (12 to 15 with 239cycles5) */
|
18 | ADC1->SMPR1 |= 0x0003FFC0;
|
Weiter weiß ich hier leider nicht mehr und ob das so richtig ist.
Kann mir jemand weiterhelfen?
Danke