aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/libopencm3/stm32/timer.h2
-rw-r--r--lib/stm32/timer.c15
2 files changed, 17 insertions, 0 deletions
diff --git a/include/libopencm3/stm32/timer.h b/include/libopencm3/stm32/timer.h
index 4ba3c98..7b5df86 100644
--- a/include/libopencm3/stm32/timer.h
+++ b/include/libopencm3/stm32/timer.h
@@ -855,6 +855,7 @@ enum tim_oc_mode {
void timer_reset(u32 timer_peripheral);
void timer_enable_irq(u32 timer_peripheral, u32 irq);
void timer_disable_irq(u32 timer_peripheral, u32 irq);
+bool timer_get_flag(u32 timer_peripheral, u32 flag);
void timer_clear_flag(u32 timer_peripheral, u32 flag);
void timer_set_mode(u32 timer_peripheral, u8 clock_div,
u8 alignment, u8 direction);
@@ -915,5 +916,6 @@ void timer_set_disabled_off_state_in_idle_mode(u32 timer_peripheral);
void timer_set_break_lock(u32 timer_peripheral, u32 lock);
void timer_set_deadtime(u32 timer_peripheral, u32 deadtime);
void timer_generate_event(u32 timer_peripheral, u32 event);
+u32 timer_get_counter(u32 timer_peripheral);
#endif
diff --git a/lib/stm32/timer.c b/lib/stm32/timer.c
index 827cde0..d0876d9 100644
--- a/lib/stm32/timer.c
+++ b/lib/stm32/timer.c
@@ -104,6 +104,16 @@ void timer_disable_irq(u32 timer_peripheral, u32 irq)
TIM_DIER(timer_peripheral) &= ~irq;
}
+bool timer_get_flag(u32 timer_peripheral, u32 flag)
+{
+ if (((TIM_SR(timer_peripheral) & flag) != 0) &&
+ ((TIM_DIER(timer_peripheral) & flag) != 0)) {
+ return true;
+ }
+
+ return false;
+}
+
void timer_clear_flag(u32 timer_peripheral, u32 flag)
{
TIM_SR(timer_peripheral) &= ~flag;
@@ -929,3 +939,8 @@ void timer_generate_event(u32 timer_peripheral, u32 event)
{
TIM_EGR(timer_peripheral) |= event;
}
+
+u32 timer_get_counter(u32 timer_peripheral)
+{
+ return TIM_CNT(timer_peripheral);
+}