2020年8月23日日曜日

【STM32】HALライブラリでLチカする

最近、ロボットのハードウェア制御用にnucleo-f446re秋月のSTM32F303K8T6
使っています。

一応、一通りの環境を整えたので、今回は秋月で購入できるSTM32F303K8T6マイコンで
Lチカするまでのメモです。




これが今回使うマイコンと変換基板。

ピッチ0.8とはんだ付けがそれほど難しくなく、Max72Mhzのマイコンが変換基板と
合わせても一個440円で手に入ります。かなりコスパが良いです。



ST-LINKを使う時の最小動作回路はこんな感じです。



私はNucleo搭載のST-LINKで書き込んでいます。ST-LINKのデバック機能はすべて使ってみたわけではないので、時間があればいじってみたいですね。


開発にはSTM32CubeMXSW4STM32を使っていきます。ソフトのインストールは省略しますが、特に難しかったところはなかったと思います。




STM32CubeMXの設定

STM32CubeMXはGUIベースでマイコンのクロックやペリフェラル関係を設定でき、コードを生成してくれる便利なソフトです。


起動したらまず一番上のFile→New Projectから新規プロジェクトを作成します。
左のセレクトボックスからマイコンを選択します。今回はSTM32F303K8を選択します。
右に候補が出るのでチェックしてStart Projectを押します。




ピン設定をしたいところですが、忘れないうちにクロック設定をしてしまいましょう。
上の画像は内部クロックを使用した設定の一例です。



プロジェクト設定も先に済ませます。プロジェクト名ファイルパスとIDEの設定をします。
今回はSystem Workbench for STM32を使いたいのでプルダウンメニューから選択します。また、Aprication StructureをAdvancedにしておきます(これはよくわかっていない)。




いよいよピン設定です。灰色のピンはまだ設定されていないので右クリックで機能を
割り当てることができます。デバックで使いそうなところはかぶせたくないので先に
埋めておきます。




PA8,PA9から出力してLEDを点灯したいので、ピンを右クリックしてGPIO_OUTPUTを選択します。最後に右上のGENERATE CODEを押すとプロジェクトが生成されます。




SW4STM32でプログラミング

System Workbench for STM32(SW4STM32)でプログラミングしていきます。
上記事で生成したプロジェクトフォルダに.projectがあるはずなのでSW4STM32を指定して
実行します。


Core/Src/main.cに既にメイン関数も生成されていますので、Lチカのプログラムを追加していきます。

main.c 100行目付近
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
	  HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_8);	//PA8 出力切り替え
	  HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_9);	//PA9 出力切り替え
	  HAL_Delay(100);		//100ms停止
  }

ここで注意があり、プログラムはUSER CODE BIGINUSER CODE ENDのコメントの
間に書きます。こうしないとCubeMXを更新したときに消えてしまいます。

左上のハンマーみたいなマークでビルドし上の緑色の再生ボタンのようなマークで書き込んで実行します。

無事Lチカできました。



ちなみに、STM32CubeMXの設定を流用して新規プロジェクトを作りたいときは。

1:プロジェクト用の新規フォルダを作成
2:そこに流用したいプロジェクトの.iocファイルをコピー
3:コピーした.iocファイルでGENERATE CODEする。

で可能です。結構便利です。


今回は以上です。まだLEDチカチカできただけなので、次回はCPUの基本的な機能のサンプルプログラムを使ってみたいと思います。

0 件のコメント:

コメントを投稿