From c9f4d6952f105e67635c3711fc7cdf0100ee481e Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Sun, 13 Mar 2016 11:39:27 +0000 Subject: [PATCH] Fixed bug #725. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/branches/stable_16.1.x@9087 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/hal/ports/STM32/LLD/ADCv1/adc_lld.c | 15 +++++++++++++++ readme.txt | 1 + 2 files changed, 16 insertions(+) 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); diff --git a/readme.txt b/readme.txt index 90e76c78c..d83b4e351 100644 --- a/readme.txt +++ b/readme.txt @@ -73,6 +73,7 @@ ***************************************************************************** *** 16.1.5 *** +- HAL: Fixed prescaler not initialized in STM32 ADCv1 (bug #725). - HAL: Fixed missing DAC section in STM32F072 mcuconf.h files (bug #724). *** 16.1.4 ***