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
ここから先プログラム及び説明は有料となります。