From 933bace9f3125c0643685189e218df84c08f4501 Mon Sep 17 00:00:00 2001 From: Rocco Marco Guglielmi Date: Sat, 24 Sep 2016 12:05:41 +0000 Subject: Fixed Bug #776. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@9780 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/hal/ports/STM32/LLD/DACv1/hal_dac_lld.c | 16 ++++++++++++---- readme.txt | 5 ++++- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/os/hal/ports/STM32/LLD/DACv1/hal_dac_lld.c b/os/hal/ports/STM32/LLD/DACv1/hal_dac_lld.c index 816929e81..c9ca8f8b0 100644 --- a/os/hal/ports/STM32/LLD/DACv1/hal_dac_lld.c +++ b/os/hal/ports/STM32/LLD/DACv1/hal_dac_lld.c @@ -288,7 +288,8 @@ void dac_lld_stop(DACDriver *dacp) { #if STM32_DAC_USE_DAC1_CH1 if (&DACD1 == dacp) { - if ((dacp->params->dac->CR & DAC_CR_EN2) == 0U) { + if ((dacp->params->dac->CR & DAC_CR_EN1) == 0U) { + rccDisableDAC1(false); } } @@ -296,7 +297,8 @@ void dac_lld_stop(DACDriver *dacp) { #if STM32_DAC_USE_DAC1_CH2 if (&DACD2 == dacp) { - if ((dacp->params->dac->CR & DAC_CR_EN1) == 0U) { + if ((dacp->params->dac->CR & DAC_CR_EN2) == 0U) { + rccDisableDAC1(false); } } @@ -304,7 +306,7 @@ void dac_lld_stop(DACDriver *dacp) { #if STM32_DAC_USE_DAC2_CH1 if (&DACD3 == dacp) { - if ((dacp->params->dac->CR & DAC_CR_EN2) == 0U) { + if ((dacp->params->dac->CR & DAC_CR_EN1) == 0U) { rccDisableDAC2(false); } } @@ -312,7 +314,7 @@ void dac_lld_stop(DACDriver *dacp) { #if STM32_DAC_USE_DAC2_CH2 if (&DACD4 == dacp) { - if ((dacp->params->dac->CR & DAC_CR_EN1) == 0U) { + if ((dacp->params->dac->CR & DAC_CR_EN2) == 0U) { rccDisableDAC2(false); } } @@ -345,9 +347,11 @@ void dac_lld_put_channel(DACDriver *dacp, *(&dacp->params->dac->DHR12R1 + dacp->params->dataoffset) = (uint32_t)sample; #endif } +#if (STM32_HAS_DAC1_CH2 || STM32_HAS_DAC2_CH2) else { dacp->params->dac->DHR12R2 = (uint32_t)sample; } +#endif break; case DAC_DHRM_12BIT_LEFT: #if STM32_DAC_DUAL_MODE @@ -360,9 +364,11 @@ void dac_lld_put_channel(DACDriver *dacp, *(&dacp->params->dac->DHR12L1 + dacp->params->dataoffset) = (uint32_t)sample; #endif } +#if (STM32_HAS_DAC1_CH2 || STM32_HAS_DAC2_CH2) else { dacp->params->dac->DHR12L2 = (uint32_t)sample; } +#endif break; case DAC_DHRM_8BIT_RIGHT: #if STM32_DAC_DUAL_MODE @@ -375,9 +381,11 @@ void dac_lld_put_channel(DACDriver *dacp, *(&dacp->params->dac->DHR8R1 + dacp->params->dataoffset) = (uint32_t)sample; #endif } +#if (STM32_HAS_DAC1_CH2 || STM32_HAS_DAC2_CH2) else { dacp->params->dac->DHR8R2 = (uint32_t)sample; } +#endif break; default: osalDbgAssert(false, "unexpected DAC mode"); diff --git a/readme.txt b/readme.txt index ee2e02be8..aa6abae00 100644 --- a/readme.txt +++ b/readme.txt @@ -126,7 +126,10 @@ - RT: Merged RT4. - NIL: Merged NIL2. - NIL: Added STM32F7 demo. -- HAL: Fixed addition semicolon in cpp wrapper (bug #774)(backported to 16.1.6, 3.0.6). +- HAL: Fixed DAC driver not compiling on STM32F051 and some bitmasks related + to DAC disabling (bug #776)(backported to 16.1.6, 3.0.6). +- HAL: Fixed addition semicolon in cpp wrapper (bug #774) + (backported to 16.1.6, 3.0.6). - HAL: Fixed function gpt_lld_polled_delay() is broken on STM32 (bug #775) (backported to 16.1.6, 3.0.6). - HAL: Fixed invalid output initialization for STM32 DACx channels 2 -- cgit v1.2.3