From d40fb96fcf6b7415c445df036641ebd1fa00e55c Mon Sep 17 00:00:00 2001 From: Piotr Esden-Tempski Date: Mon, 31 Jan 2011 22:08:37 -0800 Subject: [PATCH] Added set prescaler and set repetition counter functions to timer. --- examples/stm32/stm32-h103/pwm_6step/pwm_6step.c | 9 ++++++--- include/libopencm3/stm32/timer.h | 2 ++ lib/stm32/timer.c | 13 +++++++++++++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/examples/stm32/stm32-h103/pwm_6step/pwm_6step.c b/examples/stm32/stm32-h103/pwm_6step/pwm_6step.c index 505b3c83..bda8ff79 100644 --- a/examples/stm32/stm32-h103/pwm_6step/pwm_6step.c +++ b/examples/stm32/stm32-h103/pwm_6step/pwm_6step.c @@ -124,9 +124,6 @@ void tim_setup(void) /* Reset TIM1 peripheral */ timer_reset(TIM1); - /* Clock division. */ - timer_set_clock_division(TIM1, TIM_CR1_CKD_CK_INT); - /* Timer global mode: * - No divider * - alignment edge @@ -136,6 +133,12 @@ void tim_setup(void) TIM_CR1_CMS_EDGE, TIM_CR1_DIR_UP); + /* Reset prescaler value. */ + timer_set_prescaler(TIM1, 0); + + /* Reset repetition counter value. */ + timer_set_repetition_counter(TIM1, 0); + /* Enable preload. */ timer_enable_preload(TIM1); diff --git a/include/libopencm3/stm32/timer.h b/include/libopencm3/stm32/timer.h index b11802e2..4ba3c985 100644 --- a/include/libopencm3/stm32/timer.h +++ b/include/libopencm3/stm32/timer.h @@ -883,6 +883,8 @@ void timer_enable_compare_control_update_on_trigger(u32 timer_peripheral); void timer_disable_compare_control_update_on_trigger(u32 timer_peripheral); void timer_enable_preload_complementry_enable_bits(u32 timer_peripheral); void timer_disable_preload_complementry_enable_bits(u32 timer_peripheral); +void timer_set_prescaler(u32 timer_peripheral, u32 value); +void timer_set_repetition_counter(u32 timer_peripheral, u32 value); void timer_set_period(u32 timer_peripheral, u32 period); void timer_enable_oc_clear(u32 timer_peripheral, enum tim_oc_id oc_id); void timer_disable_oc_clear(u32 timer_peripheral, enum tim_oc_id oc_id); diff --git a/lib/stm32/timer.c b/lib/stm32/timer.c index 9a6534d1..827cde0e 100644 --- a/lib/stm32/timer.c +++ b/lib/stm32/timer.c @@ -253,6 +253,19 @@ void timer_disable_preload_complementry_enable_bits(u32 timer_peripheral) TIM_CR2(timer_peripheral) &= ~TIM_CR2_CCPC; } +void timer_set_prescaler(u32 timer_peripheral, u32 value) +{ + TIM_PSC(timer_peripheral) = value; +} + +void timer_set_repetition_counter(u32 timer_peripheral, u32 value) +{ + if ((timer_peripheral == TIM1) || + (timer_peripheral == TIM8)) { + TIM_RCR(timer_peripheral) = value; + } +} + void timer_set_period(u32 timer_peripheral, u32 period) { TIM_ARR(timer_peripheral) = period;