aboutsummaryrefslogtreecommitdiffstats
path: root/os/hal/platforms/STM32/pwm_lld.c
diff options
context:
space:
mode:
authorgdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2010-11-21 13:09:42 +0000
committergdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2010-11-21 13:09:42 +0000
commit2847f7574d257886e31c8f6d96bfebc82c2b4ee5 (patch)
tree665174ac53e0c0adcdc7865128c27a31e029a854 /os/hal/platforms/STM32/pwm_lld.c
parentaf0a2cee78dd8dfd173e28b814ba757b9ef2022c (diff)
downloadChibiOS-2847f7574d257886e31c8f6d96bfebc82c2b4ee5.tar.gz
ChibiOS-2847f7574d257886e31c8f6d96bfebc82c2b4ee5.tar.bz2
ChibiOS-2847f7574d257886e31c8f6d96bfebc82c2b4ee5.zip
Fixed bug 3114467.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@2408 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os/hal/platforms/STM32/pwm_lld.c')
-rw-r--r--os/hal/platforms/STM32/pwm_lld.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/os/hal/platforms/STM32/pwm_lld.c b/os/hal/platforms/STM32/pwm_lld.c
index 6a0cf311a..335c0c8bd 100644
--- a/os/hal/platforms/STM32/pwm_lld.c
+++ b/os/hal/platforms/STM32/pwm_lld.c
@@ -87,8 +87,9 @@ static void stop_channels(PWMDriver *pwmp) {
pwmp->pd_tim->CCR2 = 0; /* Comparator 2 disabled. */
pwmp->pd_tim->CCR3 = 0; /* Comparator 3 disabled. */
pwmp->pd_tim->CCR4 = 0; /* Comparator 4 disabled. */
- pwmp->pd_tim->CCMR1 = 0; /* Channels 1 and 2 frozen. */
- pwmp->pd_tim->CCMR2 = 0; /* Channels 3 and 4 frozen. */
+ /* Channels forced to idle.*/
+ pwmp->pd_tim->CCMR1 = TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC2M_2;
+ pwmp->pd_tim->CCMR2 = TIM_CCMR2_OC3M_2 | TIM_CCMR2_OC4M_2;
}
#if STM32_PWM_USE_TIM2 || STM32_PWM_USE_TIM3 || STM32_PWM_USE_TIM4 || \
@@ -504,22 +505,22 @@ void pwm_lld_disable_channel(PWMDriver *pwmp, pwmchannel_t channel) {
switch (channel) {
case 0:
pwmp->pd_tim->CCR1 = 0;
- pwmp->pd_tim->CCMR1 = pwmp->pd_tim->CCMR1 & 0xFF00;
+ pwmp->pd_tim->CCMR1 = (pwmp->pd_tim->CCMR1 & 0xFF00) | TIM_CCMR1_OC1M_2;
pwmp->pd_tim->DIER &= ~TIM_DIER_CC1IE;
break;
case 1:
pwmp->pd_tim->CCR2 = 0;
- pwmp->pd_tim->CCMR1 = pwmp->pd_tim->CCMR1 & 0x00FF;
+ pwmp->pd_tim->CCMR1 = (pwmp->pd_tim->CCMR1 & 0x00FF) | TIM_CCMR1_OC2M_2;
pwmp->pd_tim->DIER &= ~TIM_DIER_CC2IE;
break;
case 2:
pwmp->pd_tim->CCR3 = 0;
- pwmp->pd_tim->CCMR2 = pwmp->pd_tim->CCMR2 & 0xFF00;
+ pwmp->pd_tim->CCMR2 = (pwmp->pd_tim->CCMR2 & 0xFF00) | TIM_CCMR2_OC3M_2;
pwmp->pd_tim->DIER &= ~TIM_DIER_CC3IE;
break;
case 3:
pwmp->pd_tim->CCR4 = 0;
- pwmp->pd_tim->CCMR2 = pwmp->pd_tim->CCMR2 & 0x00FF;
+ pwmp->pd_tim->CCMR2 = (pwmp->pd_tim->CCMR2 & 0x00FF) | TIM_CCMR2_OC4M_2;
pwmp->pd_tim->DIER &= ~TIM_DIER_CC4IE;
break;
}