STM32F4のタイマー
STM32F446は、タイマーが7ch搭載されています。それぞれ機能によって以下の様に分類されています。
高機能タイマー、TIM1/TIM8
汎用タイマー TIM2/TIM3〜5
基本タイマー TIM6/TIM7
今回は最も基本的な動作確認として、TIM7を使ってみます。
プロジェクトの作成、コード生成
-1.「Lチカ」でのプロジェクト作成手順に同じですが、プロジェクト名は適当に「renshyuTIM7」とします。
|
ソースコードの記述
LED ON/OFF周期の確認
LED端子をシンクロで確認すると無事100ms毎にH/Lを繰り返しているのが確認出来ました。
TIM7の設定をソースコードから変えてみる
ここまでTIM7の設定は、Category欄のTIM7パラメーターを開いて設定を書き換えていましたが、実際に周波数カウンターなどの製作では、ゲート時間をプログラムから
替える必要があります。
TIM7のPeriodeパラメーターをプログラムから変える方法を確認してみます。
方法1、TIM7のPeriodeパラメーターをグローバル変数としてひな型ソースコード /* USER CODE BEGIN 0 */ 〜/* USER CODE END 0*/の間に以下のコードを挿入
uint16_t periode;
/* USER CODE BEGIN 1 */ 〜/* USER CODE END 1*/の間に以下のコードを挿入し、LED点滅時間を変更
periode = 300-1; (注 変数値は例)
次に/* USER CODE END TIM_7 Init 1 */の下あたりにある、htim7.Init.Preiode = 数値データ―を、preiodeに書き換えることで、mainソースのperiode 値を変更できます。
この方法では、コード生成ボタン(歯車マーク)をクリックすると、periodeはCategories欄で設定した数値データ―に変ってしまいますので、ちょっと使いづらいです。
他にも、periodeを引き数として渡す方法等もありますが、別の機会にTRYしてみます。
今後の進め方
ソースコードの記述は、HAL関数を使うことで、数行で完結します。次回はタイマーサンプリング周期でA/DにTRYの予定