CCWO

挫けそうになるブログ #音楽 ##ライブ ##弾いてみた #programming ##Python ##C ##C++ ##VSCode ##Markdown ##TeX ##Git #電子工作 ##エフェクター ##PIC ##RX,RZ ##STM32 ##FPGA ##Raspberry Pi ##Ubuntu ##Fusion 360 #スポーツ ##筋トレ

STM32F303K8 GPIO Output Lチカ

開発環境

評価ボード Nucleo STM32F303K8
IDE System Workbench for STM32 (SW4STM32)
Library Hal Library
OS windows 10 pro

デバッグの設定が完了したら、とりあえずLチカしてみたいとおもいます。
作成したSW4STM32のプロジェクトで以下のコードを追加します。

 /* USER CODE BEGIN 3 */
	  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, SET);
	  HAL_Delay(500);
	  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, RESET);
	  HAL_Delay(500);
  }
  /* USER CODE END 3 */

もしくは、ユーザーラベルを用いて

  /* USER CODE BEGIN 3 */
	  HAL_GPIO_WritePin(LD3_GPIO_Port, LD3_Pin, GPIO_PIN_SET);
	  HAL_Delay(500);
	  HAL_GPIO_WritePin(LD3_GPIO_Port, LD3_Pin, GPIO_PIN_RESET);
	  HAL_Delay(500);
  }
  /* USER CODE END 3 */

STM32CubeMXの設定で、Keep User Code when re-generatingにチェックが入っているので、

/* USER CODE BEGIN */ 
/* USER CODE END */

に挟まれたコードはSTM32CubeMXの設定を更新後も維持されます。
GPIOの出力は、

HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)

のようになっています。
引数は次のように定義されています。
@param GPIOx where x can be (A..F) to select the GPIO peripheral for STM32F3 family
@param GPIO_Pin specifies the port bit to be written.
This parameter can be one of GPIO_PIN_x where x can be (0..15).
@param PinState specifies the value to be written to the selected bit.
This parameter can be one of the GPIO_PinState enum values:
@arg GPIO_PIN_RESET: to clear the port pin
@arg GPIO_PIN_SET: to set the port pin
今、Nucleoボードでは、PB3にオンボードのユーザーLEDがアサインされているので、

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, SET); // High出力
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, SET); // Low出力

で出力することができます。
出力ピンの詳細設定はSTM32CubeMXのConfigurationタブの
f:id:CCWO:20170821111901p:plain
GPIOを選択して、
f:id:CCWO:20170821111922p:plain
ここでそれぞれのピン毎に設定することができます。
GPIO ouput level: ピンの初期値
GPIO mode: プッシュプル出力かオープンドレイン出力か
GPIO Pull-up/Pull-down: 内部プルアップ/プルダウンの設定
Maximum output speed: 出力速度(基本的にはLowで良いと思います。速さが気になったらHighに変えればいいかと、クロックに応じた選択肢が出てくるのでどれでも問題なく動作します。)
User Labael: ユーザーラベル(今回NucleoではLD3でNameがついていたので合わせました。)
といった感じで細かく設定することができます。
デバッグの様子
f:id:CCWO:20170821112410p:plain
106~109にブレークポイントを付けて、一行ずつ実行しています。
緑色のLEDがついたり消えたりします。
f:id:CCWO:20170821112529j:plain
f:id:CCWO:20170821112530j:plain