環境の導入
1.本日の内容
(1) STM32マイコン(nucleo f401RE)を使用するための、環境を入れる。
(2) 入れた環境を使用して、プログラムを出力する。
使用する環境:
下記サイトの登録を行い、環境をそれぞれインストールする。
現在は、STM32 CubeIDEという統合環境があり、それを使うことが推奨されているが、
ここでは、CubeMXとTrueStdioを使用する。
使用するマイコン:
ピン配置:https://os.mbed.com/platforms/ST-Nucleo-F401RE/
ダウンロードを行ったら、
下記手順でコードの作成を行ってみる。
今回は、PA_1にLEDを接続して、LEDの点滅を行う。
手元にLEDと抵抗がない場合は、nucleof401REについているLEDを使用することができる。
その場合は、下記でPA_1を指定しているところを、PA_5に設定する。
2.コード作成:CubeMXでコードを生成
(1) STM32CubeMXを起動
(2) File→New Projectを押す。
(3) Board を検索する。(今回は、STM32F401REを使用)
(4) nucleoというボードを使用するため:https://akizukidenshi.com/catalog/g/gM-07723/
(5) ダブルクリックでボードの確定。
(6) 使用するpinをクリック。(今回は、Pin A1を使用する)
(7) GPIO_Outputに変更
(8) Project Managerに移動
(9) Project Nameを変更(自分の好きな名前)
(10) →今回は LED_1(Blinking)
注:ここで「,」を使うとエラーが起こるので、名前に「,」は入れないようにすること。
(11) Project Locationでこのプロジェクトを保存する場所を選択
(12) Toolchain/IDEを変更
(13) →今回は、TrueSTDIOを使用するため、TrueSTDIOに変更します。
(14) GENERATE CODEを押す。
(15) プロジェクトが作成される。
(16) Opne Folderを押すと、作成したプロジェクトの場所に飛べる。
3.コード作成と実行:TrueStdioでプログラム実行
(1) Atolic TrueStdioを起動
(2) work spaceはそのままでOKを押す。
(3) File →Open Projectを押す。
(4) インポート元のディレクトリーをクリック
(5) 先ほどCubeMXで作成したファイルの場所を選択
(6) フォルダーのチェックマークを先ほど作成したファイルの場所以外外す。
(7) 終了をクリック
(8) ファイルが開かれたら、Core →Src→main.cをダブルクリック
(9) →main.cに記載していく
(10) int main(void){ }を探し、今回は繰り返すために、その中のWile(1){ }に処理を記載する。
この時 /* USER CODE BEGIN 3 */と /* USER CODE END 3 */の間に記載します。
この /* USER CODE BEGIN xx */ /* USER CODE END xx */の間に記載しないと、CubeMXで再度コードを作成した際に、コードが消えてしまう。
(11) 下の方に行くと、HAL_GPIO_writePin(xxxx);というのがある。
(12) これがCubeMXで作成したpinの初期設定となっている。
(13) int main(void){ Wile(1) { }} に下記プログラムを記載する。
(14) プログラム内容
/* USER CODE BEGIN 3 */
//今回追加部分HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET); //PA1をON
HAL_Delay(1000);//1000ms待つ
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);//PA1をOFF
HAL_Delay(1000);//1000ms待つ
}
/* USER CODE END 3 */
(15) トンカチマークをクリック→ビルドが実行される。
(16) エラーが出なければOK
(17) 出たら調べてください。
ここまでで、プログラミングは完了になります。
ここから、プログラムを実行していきます。
(18) Pin PA_1にLEDと抵抗を取付け。
(19) NUCLEO-F401REをPCに接続する。
(20) 歯車っぽい緑のやつをクリック
(21) デバックを実行
(22) もしも、main.cの場所を聞かれたら、Locale Fileをクリックmain.cを選択
(2回目以降は必要なくなります。)
(23) 問題が無くなったら、再生をクリック
(24) そうするとプログラムが実行され、LEDが点滅し始める。
以上でNucleo f401REのSTM32マイコンに、CubeMXとAtricTureStdioを使ってプログラムを書き込みLEDの点滅をしてみました。
下記動画を参考にやったので、これを見れば大体わかると思います。
この動画では、nucleo f401についているLEDとボタンを使って、割り込みとLEDのON/OFFをしています。(動画が埋め込めなかったので、URLを置いておきます。)
参考資料:https://www.stmcu.jp/design/document/training-materials_j/76200/
以上
関連ブログ
組み込みC言語:
・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