Project_OKI’s diary
Project_OKI’s diary

Project_OKI’s diary

​​​​

スイッチの入力とLED出力 1.本日の内容

​ (1) STM32マイコン(nucleo f401RE)を使用して、スイッチを押したときに、LEDの点灯/消灯を行う。

 

・目次

  • スイッチの入力とLED出力
    • 1.本日の内容
    • 2.内容
      • ​​(1) やる内容の詳細​
      • (2) 使用部品​
      • (3) STM32CubeMXの設定、プログラムを出力
      • (4) AtricTrueStdioでプログラム作成
      • (5) プログラムの説明
      • (6) プログラムの説明
  • 3.関連記事

 

2.内容 ​​(1) やる内容の詳細​

  ・​STM32マイコン(nucleo f401RE)を使用して、LEDの点灯/消灯を行う。    ・nucleof401についてる青ボタンを押している間、nucleof401のLED(PA_5)を点灯。  ・青ボタン(PC_13)を離している場合は、LEDを消灯する。  ・GPIOのポート(青ボタン)の状態をReadで取り込む。

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

​​​​

(3) STM32CubeMXの設定、プログラムを出力

  (a)使用ピンを設定   ・PC13:GPIO_Input   ・PA5:GPIO_Output

  ※ピンの場所:NUCLEO-F401RE | Mbed

     (b)使用するピンの名前を変更    ・PC13→右クリック→Enter Username→KEY1とする。   ・PA5→右クリック→Enter Username→LED1とする。  (c)プログラムの出力   ・Project Managerを選択   ・Project Nameにプログラムの名前を入力:SW_LED1        ※スペース、空白文字、日本語を含めるとエラーになる場合があるので、使用しない。   ・Project Location:プロジェクトを保存する場所   ・Application Structure:Advanced (出力するフォルダの構成を選択)   ・Toolchain/IDE:TrueSTUDIO(今回は、AtoricTrueStdioを使用するため)  (f)GENERATE CODEで、コードを出力  (g)Open pROJECTをクリックすると、AtricTrueStdioが自動的に起動される。

 

 参考:

project-oki.hatenablog.com

(4) AtricTrueStdioでプログラム作成  (a) AtricTrueStdioから開く場合(上記(g)をした場合は不要)    ・AtricTrueStdioを起動    ・インポート元のディレクトリをクリック    ・CubeMXで作成した場所を指定    ・フォルダーにSW_LED1(作成したプロジェクトの名前)が表示    ・チェックされているのを確認して、終了をクリック 

​ (b) プログラムの書き込み   ・トンカチマークをクリックして、ビルドする。   ・エラーが出ないことを確認する。   ・下記プログラムを記載する。

(5) プログラムの説明

​ (a) プログラムの書き込み   ・トンカチマークをクリックして、ビルドする。   ・エラーが出ないことを確認する。   ・下記プログラムを記載する。

/* USER CODE BEGIN 1 */ uint8_t button_state = 0; //ボタン確認用変数 /* USER CODE END 1 */ while(1){  /* USER CODE BEGIN 3 */ //GPIOのステータス監視  //ボタンの入力をbutton_stateに格納  //ボタンが押されたらbutton_state = 0となる。  button_state= HAL_GPIO_ReadPin(KEY1_GPIO_Port,KEY1_Pin);  if(button_state == 0){                //ボタンが押されたら動作   HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,SET); //LEDをON  }else{ //ボタンが押された場合以外(離してる場合)   HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,RESET); //LEDをoff  } } (6) プログラムの説明

 (a)  button_state= HAL_GPIO_ReadPin(KEY1_GPIO_Port,KEY1_Pin);    ・HAL_GPIO_ReadPinで、PC13のPin状態を読み込んでいる。   ・PC13がLowなら0、Highなら1が代入される。   ・その数値をbutton_stateに格納している。   ・第一引数:KEY1_GPIO_Portが「CubeMXで設定した名前_GPIO_Port」

               になっている。   ・第二引数:KEY1_Pinが「CubeMXで設定した名前_Pin」になっている。

 ※データシート:UM1725データシート

GPIO_Read  (b)  HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,SET);   ・HAL_GPIO_WritePinがGPIOポートのHigh/Lowを設定   ・第一引数:LED1_GPIO_PortがCubeMXで設定した名前_GPIO_Port」になっている。   ・第二引数:LED1_Pinが「CubeMXで設定した名前_Pin」になっている。   ・第三引数:High/Lowの設定         ・SET    :Highに設定→3.3Vを出力         ・RESET:Lowに設定→0Vを出力  (c) 次回   このGPIOというのは、while()でループをしており、    if(button_state == 0)とelseで、その時のプログランムが実行されたときに、   stateの値を見て、stateが1ならLEDを点灯、0ならLED消灯するようになっている。      下記プログラムを作成する場合、スイッチを監視しているわけではないため、   スイッチの押すタイミングによって、ついたりつかなかったりと上手く動作しない。   ・LEDがOFFの状態で、スイッチを押したときは、LEDをON   ・LEDがONの状態で、スイッチを押したときは、LEDをOFF        そこで使用できるのが割り込み処理である。   割り込み処理は、トリガーを検知した場合のみ、実行されるプログラムを作成する。   次回、割り込み処理の実装を行う。  

3.関連記事

関連記事一覧:

・Project OKI過去のブログ一覧とか - Project_OKI’s diary

 

組み込みC言語: ・STM32マイコン学習_1(環境の導入:CubeMXとTrueStdio) - Project_OKI’s diary

・STM32マイコン_2(UART通信:TeraTermにHellow表示) - Project_OKI’s diary

・STM32マイコン_3(UART通信:複数文字送信) - Project_OKI’s diary

・STM32マイコン_4(NVICの設定内容) - Project_OKI’s diary

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

 

その他: 

・CubeIDEの使い方(起動~デバック実行) - Project_OKI’s diary

・SPI通信とは - Project_OKI’s diary

 

C言語:

・組み込みの為のC言語基礎知識1(printf) - Project_OKI’s diary

・C言語基礎知識2(for分で処理を繰り返す) - Project_OKI’s diary

・C言語基礎知識3(配列) - Project_OKI’s diary

・C言語基礎知識4(if文) - Project_OKI’s diary

・C言語基礎知識5(switch文) - Project_OKI’s diary

  データシート: ・UM1725|デザイン/サポート|STM32, STM8ファミリはSTの32bit/8bit汎用マイクロコントローラ製品 ・RM0368|デザイン/サポート|STM32, STM8ファミリはSTの32bit/8bit汎用マイクロコントローラ製品 ・NUCLEO-F401RE | Mbed    参考:・​C++日本語リファレンス(uint8_t)​・​STM32でUARTをやってみる1​・​STM32CubeIDEを使ってみよう How To STM32CubeIDE 日本語版 (5)  UARTを使ってみよう​・​マイクロマウス研修(kora編)[23] STM32マイコンでシリアル通信​・​C言語ゼミ    あると便利な電子工作セット

KeeYees 電子工作キット 初心者向け スターターキット 電子部品 基本部品56種類 エレクトロニクス入門キット Electronics Fun Kit チ価格:3478円(税込、送料無料) (2022/7/17時点)

楽天で購入

 

 ​
📎📎📎📎📎📎📎📎📎📎