From a8ec86a52767b7d90bc1467d4557e2148ad5ce9e Mon Sep 17 00:00:00 2001 From: Gareth McMullin Date: Sun, 8 Apr 2012 13:55:16 +1200 Subject: Added functions for timer input capture polarity and enable/disable. --- include/libopencm3/stm32/timer.h | 9 +++++++++ lib/stm32/f1/timer.c | 18 ++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/include/libopencm3/stm32/timer.h b/include/libopencm3/stm32/timer.h index c7a4934..a9d2329 100644 --- a/include/libopencm3/stm32/timer.h +++ b/include/libopencm3/stm32/timer.h @@ -897,6 +897,12 @@ enum tim_ic_input { TIM_IC_IN_TI4 = 6, }; +/* Input Capture input prescaler */ +enum tim_ic_pol { + TIM_IC_RISING, + TIM_IC_FALLING, +}; + /* --- TIM functions ------------------------------------------------------- */ void timer_reset(u32 timer_peripheral); void timer_enable_irq(u32 timer_peripheral, u32 irq); @@ -967,5 +973,8 @@ u32 timer_get_counter(u32 timer_peripheral); void timer_ic_set_filter(u32 timer, enum tim_ic_id ic, enum tim_ic_filter flt); void timer_ic_set_prescaler(u32 timer, enum tim_ic_id ic, enum tim_ic_psc psc); void timer_ic_set_input(u32 timer, enum tim_ic_id ic, enum tim_ic_input in); +void timer_ic_set_polarity(u32 timer, enum tim_ic_id ic, enum tim_ic_pol pol); +void timer_ic_enable(u32 timer, enum tim_ic_id ic); +void timer_ic_disable(u32 timer, enum tim_ic_id ic); #endif diff --git a/lib/stm32/f1/timer.c b/lib/stm32/f1/timer.c index 4d0e88e..e1095f2 100644 --- a/lib/stm32/f1/timer.c +++ b/lib/stm32/f1/timer.c @@ -989,3 +989,21 @@ void timer_ic_set_input(u32 timer, enum tim_ic_id ic, enum tim_ic_input in) } } +void timer_ic_set_polarity(u32 timer, enum tim_ic_id ic, enum tim_ic_pol pol) +{ + if (pol) + TIM_CCER(timer) |= (0x2 << (ic * 4)); + else + TIM_CCER(timer) &= ~(0x2 << (ic * 4)); +} + +void timer_ic_enable(u32 timer, enum tim_ic_id ic) +{ + TIM_CCER(timer) |= (0x1 << (ic * 4)); +} + +void timer_ic_disable(u32 timer, enum tim_ic_id ic) +{ + TIM_CCER(timer) &= ~(0x1 << (ic * 4)); +} + -- cgit v1.2.3