mp3playerキー入力処理
mp3プレイヤーCPU接続資料(I/Oポートの割付け)
タイマ設定:STM32勉強日記(2022/06/01):タイマ割り込み
スイッチ読み込み処理
https://app.diagrams.net/#G17aXlRw0FcDuwYpinjNpL250AyoldfvHp
clock設定
APB1:16MHz
キー割込み仕様:
TIM3:
モード:Internal Clock
割り込み順位:2(LED点滅)
プリスケーラ:1000-1 :(TIM3_Presc)
カウンターピリオド:16000:(TIM_CP)
TIM5:
モード:Internal Clock
割り込み順位:1 (キー入力)
プリスケーラ:10-1 :(TIM5_Presc)
カウンターピリオド:16000:(TIM_CP)
UART通信:
UART1の通信速度:152000
割り込み優先順位:1
UART2の通信速度:152000
割り込み優先順位:1
table:スイッチステート用定数
構造体名 KEYSTATUS
enum NOKEY 0 キーOFF
KEY_SHORT 1 キー短押し
KEY_REPEAT 2 キー押下中
KEY_LONG 3 キー長押し
table:スイッチ種類用定数
構造体名 KEYDATA
enum Key_LEFT 0x001 キーコード:左キー
Key_RIGHT 0x002 キーコード:右キー
Key_UP 0x004 キーコード:上キー
KEY_DOWN 0x008 キーコード:下キー
KEY_ENTER 0x010 キーコード:決定キー
変換確認:https://paiza.io/projects/r8wpGV2ydrU6xRveMCiZQw
https://paiza.io/projects/6HNr1oxXUlc1p8rBKi0fYg?language=c
table:スイッチ制御構造体
構造体名 KEY_CTRL_INF
宣言 KEY_CTRL_INF g_keyctrlinf
KEYSTATUS KeyStatus キーステータスの格納
KEYSTATUS LeftKeyStatus 左キーステータスの格納
KEYSTATUS RightKeyStatus 右キーステータスの格納
KEYSTATUS UpKeyStatus 上キーステータスの格納
KEYSTATUS DOWNKeyStatus 下キーステータスの格納
KEYSTATUS EnterKeyStatus 決定キーステータスの格納
KEYSTATUS DebKeyStatus デバックキーステータスの格納
UCHAR ucTimCnt チャタリング除去用カウンタ
KEYDATA inpKey 入力キー確認(キーコード格納)
table:関数の作成
関数名 引数 返り値 関数の処理内容
KeyInput none USHORT キーコード キーコードを取得し、返す。押下フラグを設定
KeyStatusSet USHORT キーコード void 各キーのステータスを設定
USHORT キーステータス
キー1:left
キー2:right
キー3:up
キー1:モード変更キー
キー短押しでモードを変更
モード1:LED1点灯、LED2消灯
モード2:LED1点灯、LED2点灯
モード3:LED1,LED2両方点灯
キー2:点滅ON/OFFキー
短押し:1秒間隔で、ON/OFF開始、停止
長押し:0.5秒間隔で、ON/OFF
キー1(LeftKey)を短押し時
→モード1を動作:LED1を点灯/消灯
キー1を長押し時
→モード1を動作:LED1を点滅
キー2(RightKey)を短押し時
→モード2を動作:LED2を点灯/消灯
キー2を長押し時
→モード2を動作:LED2を点滅
キー3(UpKey)を短押し時
→モード3を動作:LED1とLED2を同時点灯
スイッチ3を長押し時
→モード3を動作:LED1とLED2を同時消灯
キー1とキー2を同時長押し時
→モード4を動作:LED1,LED2両方点滅
ソースファイルとヘッダファイルのフォーマット作成
コーディングルールの作成