From e0ed67de6b5d4025aaad9e74080a3a421c1a760b Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Sun, 13 Mar 2016 11:39:44 +0000 Subject: Fixed bug #725. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@9088 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/hal/ports/STM32/LLD/ADCv1/adc_lld.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'os') diff --git a/os/hal/ports/STM32/LLD/ADCv1/adc_lld.c b/os/hal/ports/STM32/LLD/ADCv1/adc_lld.c index bd73a315f..2cb340e45 100644 --- a/os/hal/ports/STM32/LLD/ADCv1/adc_lld.c +++ b/os/hal/ports/STM32/LLD/ADCv1/adc_lld.c @@ -150,6 +150,14 @@ void adc_lld_init(void) { /* Calibration procedure.*/ rccEnableADC1(FALSE); + + /* CCR setup.*/ +#if STM32_ADC_SUPPORTS_PRESCALER + ADC->CCR = STM32_ADC_PRESC << 18; +#else + ADC->CCR = 0; +#endif + osalDbgAssert(ADC1->CR == 0, "invalid register state"); ADC1->CR |= ADC_CR_ADCAL; osalDbgAssert(ADC1->CR != 0, "invalid register state"); @@ -207,6 +215,13 @@ void adc_lld_stop(ADCDriver *adcp) { dmaStreamRelease(adcp->dmastp); + /* Restoring CCR default.*/ +#if STM32_ADC_SUPPORTS_PRESCALER + ADC->CCR = STM32_ADC_PRESC << 18; +#else + ADC->CCR = 0; +#endif + /* Disabling ADC.*/ if (adcp->adc->CR & ADC_CR_ADEN) { adc_lld_stop_adc(adcp->adc); -- cgit v1.2.3