"Continuous would be great. If..." <- Some loose snippets. Again, ADC+Timer periphs on STM32 are flexible, so there are lots of ways to do it... For better or for worse! ```rust // We use the ADC to measure battery voltage and ESC current. let adc_cfg = AdcConfig { // With non-timing-critical continuous reads, we can set a long sample time. sample_time: adc::SampleTime::T601, operation_mode: adc::OperationMode::Continuous, ..Default::default() }; let mut batt_curr_adc = Adc::new_adc1(dp.ADC1, AdcDevice::One, adc_cfg, AHB_FREQ); batt_curr_adc.set_trigger(adc::Trigger::Tim6Trgo, adc::TriggerEdge::HardwareRising); // Set up a basic timer that will trigger our ADC reads, at a fixed rate. // If you wish to sample at a fixed rate, consider using a basic timer (TIM6 or TIM7) let mut adc_timer = BasicTimer::new(tim6_pac, sensors_shared::ADC_SAMPLE_FREQ, &clock_cfg); // The update event is selected as a trigger output (TRGO). For instance a // master timer can then be used as a prescaler for a slave timer. adc_timer.set_mastermode(MasterModeSelection::Update); adc_timer.enable(); batt_curr_adc.read_dma( &mut V_A_ADC_READ_BUF, &[BATT_ADC_CH, CURR_ADC_CH], setup::BATT_CURR_DMA_CH, ChannelCfg { circular: dma::Circular::Enabled, ..Default::default() }, setup::BATT_CURR_DMA_PERIPH, ); ```