STM32マイコンのIoT実験で遊ぼう! その16 ~パルス数カウント回路を動かす2~
(前回からの続きです)
1.マイコンの設定
① STM32CubeIDEを使用して、新しいプロジェクトを作成します。
② USBの設定と、基板上の緑色LEDに繋がっているPB4ピンの設定を行います。
③ PA5ピンをカウンタへの入力として使います。
PA5ピンをクリックして、TIM2_ETR を選択します。
PA5ピンを介してタイマ2をカウンタとして使います。
④ タイマ2の設定を行います。
・Timers の TIM2を選び、Mode の Clock SourceをETR2にします。
・Counter Settings のCounter Period にはカウンタの上限値をタイマ2の最大値65535を設定します。
・Clock Polarity は non inverted にします。
2.ソースプログラムの作成
次にプログラムのソースコードを自動生成します。
main.c が出来上がりました。
次のコードを追加します
ヘッダファイルをインクルードします。
・char msgbuf[128];
パソコンに送信するメッセージを格納する配列を宣言
・int n;
カウンタの値を格納する変数を宣言
・HAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,GPIO_PIN_RESET);
PB4ピンに接続されている基板の緑色LEDを消灯
・__HAL_TIM_SetCounter(&htim2,0);
カウンタを0で初期化
・HAL_TIM_Base_Start(&htim2);
タイマを起動します
・HAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,GPIO_PIN_SET);
PB4ピンに接続されている基板の緑色LEDを点灯します
・HAL_Delay(10000);
10秒待ちます
・n = __HAL_TIM_GET_COUNTER(&htim2);
カウンタを読んで、変数nに格納
・HAL_TIM_Base_Stop(&htim2);
タイマを停止
・HAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,GPIO_PIN_RESET);
PB4ピンに接続されている基板の緑色LEDを消灯
・snprintf(msgbuf,sizeof(msgbuf),"count:%d\r\n",n);
パソコンに出力するメッセージを作ります
・CDC_Transmit_FS((uint8_t *)msgbuf,strlen(msgbuf));
パソコンに送信
・HAL_Delay(1000);
1秒待ちます
このプログラムを実行すると、基板の緑色LEDが10秒間点灯します。その間にスイッチが押された回数を、パソコンの端末エミュレータに表示します。
3.ビルドの実行
成功!
エラーはありません。
4.マイコンへの書込み
ARM-First をパソコンに接続します。
STM32CubeProgrammer ツールで書込みます。
5.実行
端末エミュレータ(Tera Term)を起動します。
10秒間LEDが点灯している間に、スイッチを5回押してみます。
端末エミュレータ(Tera Term)を見てみます。
カウント値が5と表示されました。
成功です!
(参考にした教材です)
CQ出版社の下記の書籍を参考にさせていただきました