Project_OKI’s diary

エンジニアの勉強ブログ

STM32マイコン27(スイッチの短押し/長押し処理 )

STM32 (スイッチ長押し/短押し制御)

1.本日の内容

 (1) STM32マイコン(nucleof401re)を使用して、

   スイッチの長押し/短押しの判定を行う。

 

・目次

 

2.内容

(1) やる内容の詳細

 ・nucleof401REスイッチのスイッチ(青ボタン)の長押し/短押し制御を行う。

 ・長押し時:LEDの点滅/LED消灯

 ・短押し時:LED点灯/消灯

 を行う。

 

 スイッチを押した時の、状態の変化を状態遷移図で示す。

 

 これを元に、状態遷移表を作成する。

 

 ・MODE1:LED点灯

 ・MODE2:LED消灯

 ・MODE3:LED点滅

 状態遷移図及び状態遷移表については下記が参考になります。

  ・状態遷移表を使用した要求分析モデル:状態遷移表による設計手法(3)(1/3 ページ) - MONOist

  ・UMLステートマシンと状態遷移図 - astah-info

  ・設計 | PlantUMLによる状態遷移図の書き方, 状態遷移表からのテスト抽出方法 - わくわくBank

 

(2) 使用部品
個数 部品名 型番
1 接続ケーブル  ジャンパーワイヤ​​
1 mbed(マイコンボード) ​​ nucleo f401RE
1 USBケーブル USBミニBタイプ

 

(2) CubeIDEの設定

 ピン及び、基本設定として、CubeIDEで下記設定を行う。

 ・LEDのGPIO出力設定(PA5:GPIO_OUT)

 ・KEYのGPIO入力設定(PC13:GPIO_IN)

 ・タイマ割り込み設定(TIM3)

  →1ms毎に割り込み発生

 ・デバック用にUART設定(UART2)

   →9600BPS/s

 下記画像を参考

 (画像ではLED制御作成後、AD変換とLCD制御を追加予定の為、そのピン設定も含まれている)

 

 

 

 詳細は、下記記事を参照。

 下記には、CubeMXの設定について、それぞれ詳細が記載されている。

 CubeIDEも同じ設定を行う。

 

 LED及びボタン設定について

  ・STM32マイコン_5(スイッチ入力とLED点灯、消灯) - Project_OKI’s diary

 タイマ割り込みの設定について

  ・STM32マイコン_9(タイマ割り込み:LED点滅) - Project_OKI’s diary

 デバック用printfについて

  ・STM32マイコン_12(printfの導入) - Project_OKI’s diary

 

(3) プログラムの作成

 今回は、下記ファイルを作成する。

 ・割り込み作成用ファイル  :IntR.c/IntR.h

  →参考:STM32マイコン26(割り込み:TIM3_IRQHandler)

 ・キー制御用ファイル    :key_ctrl.c/key_ctrl.h

  →参考:STM32マイコン_16(レジスタ操作でスイッチ入力) - Project_OKI’s diary

 ・led制御用ファイル     :led.c/led.h

  →参考:STM32マイコン_10(レジスタ操作でLED点滅) - Project_OKI’s diary

        STM32マイコン_15(レジスタ操作でLED点滅2) - Project_OKI’s diary

 ・printf用ファイル      :printf.c/printf.h

  →参考:STM32マイコン_12(printfの導入) - Project_OKI’s diary

 ・メイン処理作成用ファイル :self_main.c/self_main.h

 ・基本型設定用ファイル   :typedef.h

 ・STM32レジスタ設定ファイル:STMSys.h

  →参考:STM32マイコン_16(レジスタ操作でスイッチ入力) - Project_OKI’s diary

 

今回のファイルは、JAVADOCの形式に従ってコメントを書く。

これで書くと、doxygenによって、コードからドキュメントを生成することが可能になる。

JAVADOCについて参考:

  ・いまさら聞けない「Javadoc」と「アノテーション」入門:【改訂版】Eclipseではじめるプログラミング(22)(1/4 ページ) - @IT

 

 

ここから先プログラム及び説明は有料となります。

この続きはcodocで購入