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:
authorMrDimLis <mrlisdim@gmail.com>2019-09-18 18:14:38 +0300
committerGitHub <noreply@github.com>2019-09-18 18:14:38 +0300
commitf6c27b21519554659f5d514fbdb31f125684f24a (patch)
tree0ef3d9de72a5bcd660e2935eeec89ff5b66e56e3
parent1975714175bd790811fb77fff0f327154e082d67 (diff)
parentbfcf79cbe22e93edab3d6d4e40199c33b6245498 (diff)
Merge pull request #9 from thirdpin/feature/tim_minor_refactoring
Timer class minor refactoring
-rw-r--r--cm3cpp/timer.cpp18
-rw-r--r--cm3cpp/timer.hpp29
2 files changed, 28 insertions, 19 deletions
diff --git a/cm3cpp/timer.cpp b/cm3cpp/timer.cpp
index 49768ec..e2711e9 100644
--- a/cm3cpp/timer.cpp
+++ b/cm3cpp/timer.cpp
@@ -395,7 +395,7 @@ auto Timer::disable_trigger_interrupt() -> Result
}
// 9,12
-bool Timer::get_flag_status(Flag flag)
+bool Timer::get_flag_status(Flag flag) const
{
bool status = false;
@@ -1611,12 +1611,12 @@ auto Timer::set_capture_compare_4_com_polarity(Polarity polarity) -> Result
}
// 9,12
-uint16_t Timer::get_counter_value()
+uint16_t Timer::get_counter_value() const
{
return TIM_CNT(_timer);
}
-uint32_t Timer::get_counter_value32()
+uint32_t Timer::get_counter_value32() const
{
return TIM_CNT(_timer);
}
@@ -1628,7 +1628,7 @@ void Timer::set_counter_value(uint16_t value)
}
// 9,12
-uint16_t Timer::get_prescaler_value()
+uint16_t Timer::get_prescaler_value() const
{
return TIM_PSC(_timer);
}
@@ -1640,7 +1640,7 @@ void Timer::set_prescaler_value(uint32_t value)
}
// 9,12
-uint16_t Timer::get_autoreload_value()
+uint16_t Timer::get_autoreload_value() const
{
return TIM_ARR(_timer);
}
@@ -1652,7 +1652,7 @@ void Timer::set_autoreload_value(uint32_t value)
}
// 9,12
-uint16_t Timer::get_capture_compare_1_value()
+uint16_t Timer::get_capture_compare_1_value() const
{
return TIM_CCR1(_timer);
}
@@ -1664,7 +1664,7 @@ void Timer::set_capture_compare_1_value(uint32_t value)
}
// 9,12
-uint16_t Timer::get_capture_compare_2_value()
+uint16_t Timer::get_capture_compare_2_value() const
{
return TIM_CCR2(_timer);
}
@@ -1675,7 +1675,7 @@ void Timer::set_capture_compare_2_value(uint32_t value)
TIM_CCR2(_timer) = value;
}
-uint16_t Timer::get_capture_compare_3_value()
+uint16_t Timer::get_capture_compare_3_value() const
{
return TIM_CCR3(_timer);
}
@@ -1687,7 +1687,7 @@ void Timer::set_capture_compare_3_value(uint32_t value)
}
// 9,12
-uint16_t Timer::get_capture_compare_4_value()
+uint16_t Timer::get_capture_compare_4_value() const
{
return TIM_CCR4(_timer);
}
diff --git a/cm3cpp/timer.hpp b/cm3cpp/timer.hpp
index b3fc2de..2fe079b 100644
--- a/cm3cpp/timer.hpp
+++ b/cm3cpp/timer.hpp
@@ -26,6 +26,8 @@ TIM C++ Wrapper of libopencm3 library for STM32F2, STM32F4
#ifndef CM3CPP_TIMER_H_
#define CM3CPP_TIMER_H_
+#include <cassert>
+
#include <libopencm3/stm32/rcc.h>
#include <libopencm3/stm32/timer.h>
@@ -178,10 +180,13 @@ class Timer
HI_RISING_EDGE
};
- Timer(uint8_t timer_num)
using ExtTriggerFilter = tim_ic_filter;
using ExtTriggerPrescaler = tim_ic_psc;
using ExtTriggerPolarity = tim_et_pol;
+
+ using TimerNumber = uint8_t;
+
+ Timer(TimerNumber timer_num)
{
#if defined(STM32F2) || defined(STM32F4)
switch (timer_num) {
@@ -241,6 +246,8 @@ class Timer
_timer = TIM14;
rcc_periph_reset_pulse(RST_TIM14);
break;
+ default:
+ assert(false);
}
#endif
}
@@ -285,7 +292,7 @@ class Timer
Result enable_trigger_interrupt();
Result disable_trigger_interrupt();
// SR///////////////////////////////////////////////////////
- bool get_flag_status(Flag flag);
+ bool get_flag_status(Flag flag) const;
Result clear_flag_status(Flag flag);
// EGR//////////////////////////////////////////////////////
void update_generation();
@@ -340,28 +347,30 @@ class Timer
Result set_capture_compare_4_polarity(Polarity polarity);
Result set_capture_compare_4_com_polarity(Polarity polarity);
// CNT//////////////////////////////////////////////////////
- uint16_t get_counter_value();
- uint32_t get_counter_value32();
+ uint16_t get_counter_value() const;
+ uint32_t get_counter_value32() const;
void set_counter_value(uint16_t value);
// PSC//////////////////////////////////////////////////////
- uint16_t get_prescaler_value();
+ uint16_t get_prescaler_value() const;
void set_prescaler_value(uint32_t value);
// ARR//////////////////////////////////////////////////////
- uint16_t get_autoreload_value();
+ uint16_t get_autoreload_value() const;
void set_autoreload_value(uint32_t value);
// CCR1/////////////////////////////////////////////////////
- uint16_t get_capture_compare_1_value();
+ uint16_t get_capture_compare_1_value() const;
void set_capture_compare_1_value(uint32_t value);
// CCR2/////////////////////////////////////////////////////
- uint16_t get_capture_compare_2_value();
+ uint16_t get_capture_compare_2_value() const;
void set_capture_compare_2_value(uint32_t value);
// CCR3/////////////////////////////////////////////////////
- uint16_t get_capture_compare_3_value();
+ uint16_t get_capture_compare_3_value() const;
void set_capture_compare_3_value(uint32_t value);
// CCR4/////////////////////////////////////////////////////
- uint16_t get_capture_compare_4_value();
+ uint16_t get_capture_compare_4_value() const;
void set_capture_compare_4_value(uint32_t value);
+ uint32_t periph_address() const { return _timer; }
+
private:
uint32_t _timer;
};