aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGareth McMullin2012-04-08 13:55:16 +1200
committerGareth McMullin2012-04-08 13:55:16 +1200
commita8ec86a52767b7d90bc1467d4557e2148ad5ce9e (patch)
tree24617cc12c92bcba6b48c969ddce26a029e2bb2e
parent4b041697f4b2c742412c841d33ba41c873bc56bf (diff)
Added functions for timer input capture polarity and enable/disable.
-rw-r--r--include/libopencm3/stm32/timer.h9
-rw-r--r--lib/stm32/f1/timer.c18
2 files changed, 27 insertions, 0 deletions
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));
+}
+