diff options
author | Third Pin <redmine.thirdpin@gmail.com> | 2019-09-18 17:59:24 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-18 17:59:24 +0300 |
commit | 1975714175bd790811fb77fff0f327154e082d67 (patch) | |
tree | 8f69791b9527c2c1e3909efdc78a436d59b9c2a8 | |
parent | 2dcd029e0c4e76498451a998ca9d95e29e355d08 (diff) | |
parent | 5938ffc0d5ee525a5d39249f3da29ac6c065aed0 (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.cpp | 25 | ||||
-rw-r--r-- | cm3cpp/timer.hpp | 11 |
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(); |