Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/thirdpin/libopencm3_cpp_extensions.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThird Pin <redmine.thirdpin@gmail.com>2019-09-18 17:59:24 +0300
committerGitHub <noreply@github.com>2019-09-18 17:59:24 +0300
commit1975714175bd790811fb77fff0f327154e082d67 (patch)
tree8f69791b9527c2c1e3909efdc78a436d59b9c2a8
parent2dcd029e0c4e76498451a998ca9d95e29e355d08 (diff)
parent5938ffc0d5ee525a5d39249f3da29ac6c065aed0 (diff)
Merge pull request #8 from thirdpin/feature/tim_etr_config_methods
Add some ETR config methods to Timer class
-rw-r--r--cm3cpp/timer.cpp25
-rw-r--r--cm3cpp/timer.hpp11
2 files changed, 36 insertions, 0 deletions
diff --git a/cm3cpp/timer.cpp b/cm3cpp/timer.cpp
index e02b54b..49768ec 100644
--- a/cm3cpp/timer.cpp
+++ b/cm3cpp/timer.cpp
@@ -1698,6 +1698,31 @@ void Timer::set_capture_compare_4_value(uint32_t value)
TIM_CCR4(_timer) = value;
}
+void Timer::enable_etr_clock()
+{
+ TIM_SMCR(_timer) |= TIM_SMCR_ECE; // set enable bit
+}
+
+void Timer::disable_etr_clock()
+{
+ TIM_SMCR(_timer) &= ~TIM_SMCR_ECE; // reset enable bit
+}
+
+void Timer::set_etr_filter(ExtTriggerFilter filter)
+{
+ timer_slave_set_filter(_timer, filter);
+}
+
+void Timer::set_etr_prescaler(ExtTriggerPrescaler prescaler)
+{
+ timer_slave_set_prescaler(_timer, prescaler);
+}
+
+void Timer::set_etr_polarity(ExtTriggerPolarity polarity)
+{
+ timer_slave_set_polarity(_timer, polarity);
+}
+
} // namespace tim
} // namespace cm3cpp
diff --git a/cm3cpp/timer.hpp b/cm3cpp/timer.hpp
index 31b78a9..b3fc2de 100644
--- a/cm3cpp/timer.hpp
+++ b/cm3cpp/timer.hpp
@@ -179,6 +179,9 @@ class Timer
};
Timer(uint8_t timer_num)
+ using ExtTriggerFilter = tim_ic_filter;
+ using ExtTriggerPrescaler = tim_ic_psc;
+ using ExtTriggerPolarity = tim_et_pol;
{
#if defined(STM32F2) || defined(STM32F4)
switch (timer_num) {
@@ -260,6 +263,14 @@ class Timer
Result set_trigger(Trigger trigger);
Result enable_master_slave_mode();
Result disable_master_slave_mode();
+
+ // ETR config (external trigger), TIM 1-8 (F4, F2)
+ void enable_etr_clock(); //!< Enable CNT after ETR clock enabling
+ void disable_etr_clock();
+ void set_etr_filter(ExtTriggerFilter);
+ void set_etr_prescaler(ExtTriggerPrescaler);
+ void set_etr_polarity(ExtTriggerPolarity);
+
// DIER/////////////////////////////////////////////////////
Result enable_update_interrupt();
Result disable_update_interrupt();