TimerManager
概要
HALbedライブラリ内のタイマ設定管理クラス。タイマハンドルを用いて、プリスケーラ値や周期の取得・設定、タイマ周期(秒単位)や周波数の計算を行い、ハードウェアへの設定反映を実施する。
クラス概要
TimerManager
TimerManagerクラスは、ハードウェアタイマの設定値管理と計算処理を提供する。
コンストラクタ
cpp
TimerManager(TIM_HandleTypeDef* timerHandle);timerHandle: タイマハンドルへのポインタ
メソッド
void init();
タイマ設定を初期化し、更新内容をハードウェアに適用する。
uint32_t getPrescaler() const;
現在のタイマプリスケーラ値を取得する。
uint32_t getPeriod() const;
現在のタイマ周期を取得する。
double getTimerPeriod() const;
タイマ周期(秒単位)を計算して取得する。
double getTimerFrequency() const;
タイマの周波数を算出して取得する。
void setPrescaler(uint32_t prescaler);
タイマプリスケーラ値を設定する。
void setPeriod(uint32_t period);
タイマ周期を設定する。
void updateTimerSettings();
更新した設定をハードウェアタイマに適用する。
使用方法
TimerManagerクラスのインスタンス作成cppHALbed::TimerManager tm(&htim);タイマ設定の初期化
cpptm.init();必要に応じてプリスケーラや周期の取得および変更
cppuint32_t prescaler = tm.getPrescaler(); uint32_t period = tm.getPeriod(); tm.setPrescaler(new_value); tm.setPeriod(new_period); tm.updateTimerSettings();
注意事項
updateTimerSettingsで設定内容を必ずハードウェアに反映すること- プロジェクト設定でHAL_TIM_MODULE_ENABLEDが有効であることを確認すること
サンプルコード
cpp
#include "main.h"
#include "../../Library/HALbed/Inc/HALbed.hpp"
// 外部宣言: TIM3のハンドル(CubeMXで生成される)
extern TIM_HandleTypeDef htim3;
int main(void) {
// HAL初期化
HAL_Init();
// クロック設定とTIM3初期化
SystemClock_Config();
MX_TIM3_Init();
// TimerManagerインスタンスの作成と初期化
HALbed::TimerManager tm(&htim3);
tm.init();
// 現在のプリスケーラと周期の取得
uint32_t prescaler = tm.getPrescaler();
uint32_t period = tm.getPeriod();
// タイマ設定の更新例
tm.setPrescaler(prescaler + 5);
tm.setPeriod(period - 50);
tm.updateTimerSettings();
// タイマ周期(秒)および周波数の計算結果取得
double timerPeriodSec = tm.getTimerPeriod();
double timerFrequency = tm.getTimerFrequency();
// デバッグ等に利用可能(例: UART経由で出力)
// メインループ
while (1) {
}
return 0;
}