見出し画像

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出版社の下記の書籍を参考にさせていただきました


いいなと思ったら応援しよう!