uint32_t adc_read_injected(uint32_t adc, uint8_t reg) { switch (reg) { case 1: return ADC_JDR1(adc); case 2: return ADC_JDR2(adc); case 3: return ADC_JDR3(adc); case 4: return ADC_JDR4(adc); } return 0; }
void adc_init( void ) { /* initialize buffer pointers with 0 (not set). buffer null pointers will be ignored in interrupt handler, which is important as there are no buffers registered at the time the ADC trigger interrupt is enabled. */ uint8_t channel; #ifdef USE_AD1 for(channel = 0; channel < NB_ADC1_CHANNELS; channel++) adc1_buffers[channel] = NULL; adc_injected_channels[0] = &ADC_JDR1(ADC1); adc_injected_channels[1] = &ADC_JDR2(ADC1); adc_injected_channels[2] = &ADC_JDR3(ADC1); adc_injected_channels[3] = &ADC_JDR4(ADC1); #endif #ifdef USE_AD2 for(channel = 0; channel < NB_ADC2_CHANNELS; channel++) adc2_buffers[channel] = NULL; adc_injected_channels[0] = &ADC_JDR1(ADC2); adc_injected_channels[1] = &ADC_JDR2(ADC2); adc_injected_channels[2] = &ADC_JDR3(ADC2); adc_injected_channels[3] = &ADC_JDR4(ADC2); #endif adc_new_data_trigger = FALSE; adc_channel_map[0] = BOARD_ADC_CHANNEL_1; adc_channel_map[1] = BOARD_ADC_CHANNEL_2; adc_channel_map[2] = BOARD_ADC_CHANNEL_3; adc_channel_map[3] = BOARD_ADC_CHANNEL_4; adc_init_rcc(); adc_init_irq(); // adc_init_single(ADCx, c1, c2, c3, c4) #ifdef USE_AD1 adc_init_single(ADC1, #ifdef USE_AD1_1 1, #else 0, #endif #ifdef USE_AD1_2 1, #else 0, #endif #ifdef USE_AD1_3 1, #else 0, #endif #ifdef USE_AD1_4 1 #else 0 #endif ); #endif // USE_AD1 #ifdef USE_AD2 adc_init_single(ADC2, #ifdef USE_AD2_1 1, #else 0, #endif #ifdef USE_AD2_2 1, #else 0, #endif #ifdef USE_AD2_3 1, #else 0, #endif #ifdef USE_AD2_4 1 #else 0 #endif ); #endif // USE_AD2 }