20struct TIM_HandleTypeDef;
45 void* user_data =
nullptr)
noexcept;
52 void* user_data =
nullptr)
noexcept;
91 static
void IsrDispatch(TIM_HandleTypeDef* htim) noexcept;
Abstract base class for periodic timer implementations in the HardFOC system.
hf_timer_err_t
Definition BasePeriodicTimer.h:65
void(*)(void *user_data) hf_timer_callback_t
Timer callback function type.
Definition BasePeriodicTimer.h:146
uint32_t hf_u32_t
Platform-agnostic 32-bit unsigned integer type.
Definition HardwareTypes.h:52
uint64_t hf_u64_t
Platform-agnostic 64-bit unsigned integer type.
Definition HardwareTypes.h:58
STM32 platform-specific type definitions for hardware abstraction.
Abstract base class for periodic timer operations.
Definition BasePeriodicTimer.h:168
STM32 Periodic Timer implementation.
Definition StmPeriodicTimer.h:32
hf_u64_t period_us_
Current period in µs.
Definition StmPeriodicTimer.h:96
const char * GetDescription() const noexcept override
Get description of this timer implementation.
Definition StmPeriodicTimer.cpp:208
hf_timer_stats_t stats_
Internal stats.
Definition StmPeriodicTimer.h:97
StmPeriodicTimer(TIM_HandleTypeDef *htim, hf_u32_t timer_clock_hz, hf_timer_callback_t callback=nullptr, void *user_data=nullptr) noexcept
Construct from CubeMX timer handle.
Definition StmPeriodicTimer.cpp:46
bool ApplyPeriod(hf_u64_t period_us) noexcept
Recalculate and apply PSC+ARR for the requested period.
Definition StmPeriodicTimer.cpp:236
hf_timer_err_t GetStats(hf_u64_t &callback_count, hf_u64_t &missed_callbacks, hf_timer_err_t &last_error) noexcept override
Get timer statistics and status information.
Definition StmPeriodicTimer.cpp:174
hf_timer_err_t GetPeriod(hf_u64_t &period_us) noexcept override
Get the current timer period.
Definition StmPeriodicTimer.cpp:164
hf_timer_err_t GetStatistics(hf_timer_statistics_t &statistics) const noexcept override
Get timer operation statistics.
Definition StmPeriodicTimer.cpp:190
hf_u64_t GetResolution() const noexcept override
Get timer resolution.
Definition StmPeriodicTimer.cpp:225
void UnregisterDispatch() noexcept
Definition StmPeriodicTimer.cpp:301
static DispatchEntry s_dispatch_[kMaxTimerInstances]
Definition StmPeriodicTimer.h:39
TIM_HandleTypeDef * htim_
HAL timer handle.
Definition StmPeriodicTimer.h:94
hf_timer_err_t GetDiagnostics(hf_timer_diagnostics_t &diagnostics) const noexcept override
Get timer diagnostic information.
Definition StmPeriodicTimer.cpp:195
hf_timer_err_t Deinitialize() noexcept override
Deinitialize the timer and free resources.
Definition StmPeriodicTimer.cpp:88
hf_u64_t GetMaxPeriod() const noexcept override
Get minimum supported timer period.
Definition StmPeriodicTimer.cpp:212
hf_timer_err_t ResetStats() noexcept override
Reset timer statistics.
Definition StmPeriodicTimer.cpp:184
~StmPeriodicTimer() noexcept override
Definition StmPeriodicTimer.cpp:69
void RegisterDispatch() noexcept
Definition StmPeriodicTimer.cpp:294
static void IsrDispatch(TIM_HandleTypeDef *htim) noexcept
Call from HAL_TIM_PeriodElapsedCallback to dispatch to instances.
Definition StmPeriodicTimer.cpp:282
static int s_dispatch_count_
Definition StmPeriodicTimer.h:109
hf_u32_t timer_clock_hz_
Input clock to the timer.
Definition StmPeriodicTimer.h:95
StmPeriodicTimer & operator=(const StmPeriodicTimer &)=delete
hf_timer_err_t Start(hf_u64_t period_us) noexcept override
Start the periodic timer with specified period.
Definition StmPeriodicTimer.cpp:101
hf_timer_err_t SetPeriod(hf_u64_t period_us) noexcept override
Change the timer period while running.
Definition StmPeriodicTimer.cpp:141
hf_timer_err_t Initialize() noexcept override
Initialize the timer hardware/resources.
Definition StmPeriodicTimer.cpp:77
hf_u64_t GetMinPeriod() const noexcept override
Get maximum supported timer period.
Definition StmPeriodicTimer.cpp:219
StmPeriodicTimer(const StmPeriodicTimer &)=delete
hf_timer_err_t Stop() noexcept override
Stop the periodic timer.
Definition StmPeriodicTimer.cpp:125
static constexpr int kMaxTimerInstances
Definition StmPeriodicTimer.h:103
Definition StmPeriodicTimer.h:104
StmPeriodicTimer * instance
Definition StmPeriodicTimer.h:106
TIM_HandleTypeDef * htim
Definition StmPeriodicTimer.h:105
Periodic timer configuration for STM32.
Definition StmTypes.h:479
Timer diagnostic information.
Definition BasePeriodicTimer.h:126
Timer operation statistics.
Definition BasePeriodicTimer.h:107
Timer statistics structure.
Definition BasePeriodicTimer.h:91