aboutsummaryrefslogtreecommitdiffstats
path: root/os
diff options
context:
space:
mode:
authorGiovanni Di Sirio <gdisirio@gmail.com>2016-03-13 11:39:44 +0000
committerGiovanni Di Sirio <gdisirio@gmail.com>2016-03-13 11:39:44 +0000
commite0ed67de6b5d4025aaad9e74080a3a421c1a760b (patch)
tree7f64dd94af225ff24c68904fea7843e0f884b684 /os
parent8464f9100e1a7da211e00868d7219f83c3e66b49 (diff)
downloadChibiOS-e0ed67de6b5d4025aaad9e74080a3a421c1a760b.tar.gz
ChibiOS-e0ed67de6b5d4025aaad9e74080a3a421c1a760b.tar.bz2
ChibiOS-e0ed67de6b5d4025aaad9e74080a3a421c1a760b.zip
Fixed bug #725.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@9088 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os')
-rw-r--r--os/hal/ports/STM32/LLD/ADCv1/adc_lld.c15
1 files changed, 15 insertions, 0 deletions
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);