From fcdf0394ed7601627d17e4262076c9e2dd4cfa59 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Wed, 11 Apr 2018 08:21:02 +0000 Subject: Fixed bug #934. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@11879 110e8d01-0319-4d1e-a829-52ad28d1bb01 --- os/hal/ports/STM32/LLD/TIMv1/hal_pwm_lld.c | 4 ++-- readme.txt | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/os/hal/ports/STM32/LLD/TIMv1/hal_pwm_lld.c b/os/hal/ports/STM32/LLD/TIMv1/hal_pwm_lld.c index a59105215..6bf31ebc0 100644 --- a/os/hal/ports/STM32/LLD/TIMv1/hal_pwm_lld.c +++ b/os/hal/ports/STM32/LLD/TIMv1/hal_pwm_lld.c @@ -771,8 +771,8 @@ void pwm_lld_enable_periodic_notification(PWMDriver *pwmp) { /* If the IRQ is not already enabled care must be taken to clear it, it is probably already pending because the timer is running.*/ if ((dier & STM32_TIM_DIER_UIE) == 0) { + pwmp->tim->SR = ~STM32_TIM_SR_UIF; pwmp->tim->DIER = dier | STM32_TIM_DIER_UIE; - pwmp->tim->SR &= STM32_TIM_SR_UIF; } } @@ -813,8 +813,8 @@ void pwm_lld_enable_channel_notification(PWMDriver *pwmp, /* If the IRQ is not already enabled care must be taken to clear it, it is probably already pending because the timer is running.*/ if ((dier & (2 << channel)) == 0) { - pwmp->tim->DIER = dier | (2 << channel); pwmp->tim->SR = ~(2 << channel); + pwmp->tim->DIER = dier | (2 << channel); } } diff --git a/readme.txt b/readme.txt index 84a5c8b5e..dbb79d4f3 100644 --- a/readme.txt +++ b/readme.txt @@ -111,6 +111,8 @@ - EX: Updated LIS302DL to 1.1.0 (backported to 18.2.1). - EX: Updated LPS25H to 1.1.0 (backported to 18.2.1). - EX: Updated LSM303DLHC to 1.1.0 (backported to 18.2.1). +- HAL: Fixed problem clearing UIF timer flag in STM32 PWM driver (bug #934) + (backported to 18.2.1 and 17.6.5). - HAL: Fixed USB Serial driver problem with zero-size OUT transactions (bug #933)(backported to 18.2.1 and 17.6.5). - HAL: Fixed race condition in STM32 QSPI driver (bug #932)(backported to -- cgit v1.2.3