Lチカをしてみる
前回まででやっとの思いで開発環境を構築出来ました。
やっとシリーズの本題、Lチカに入れます。
今回は、ボードに元々ついているデバック用のチップLEDを光らせます。
何か接続するほうが楽しいのは確かなのですが、まあ今回はテストということで。
コンフィグ設定する
まずはEclipseからCubeMXを起動しましょう。
方法は前回の記事の通りです。
CubeMXを起動するとHome画面が出てきますので、"ACCESS TO BOARD SELECTOR"で新しいプロジェクトを始めます。
すると新しいウィンドウが開きます。
このウィンドウかなり親切設計で、STから発売されているマイコンボードが画像付きで表示されます。
使用するマイコンボードを選択しましょう。
今回使用するのは、NUCLRO-F446REです。
選択したら右上の"Start Project"をクリックします。
クリックすると"ペリフェラルを初期化しまっか?"と聞かれます。
初期化も何もまだいじってないのですが...。とりあえず"はい"にしました。
ダイアログが消えると、ICの図が表示されます。
細かく文字が書いてありますが、なんとGUIでピン配の設定ができるようです。
しかも選んだマイコンボードに接続されているLEDなどはプリセットされています。
もうデータシートとにらめっこする時代ではないのですねぇ。
とりあえずこちらも特に設定を変えずに行きましょう。
上のタブには、"Pinout&Configration"、"Clock Configration"、"Project Manager"、"Tools"の4項目があります。
"Project Manager"を選択して、名前と保存場所を選びましょう。
今回は"Lchika"とでもしておきましょうか。
また"Toolchain/IDE"を"SW4STM32"にします。
これをしないと編集ができませんので忘れないようにしましょう。
入力したら、右上の"GENERATE CODE"をクリックします。
これでコードが生成されます。この時点でCubeMXの出番は終了です。
コード生成が終わると、"コード生成終わったで!ファイル開きまっか?"と聞かれますが、まずはキャンセルします。
Lチカプログラムを組む
コンフィグのコード生成が終わりましたので、Lチカのプログラムを組んでいきます。
ここからはSW4STM32にバトンタッチします。
Eclipseのウィンドウから"File">"Import" 開いたウィンドウから"General">"Existing Projects into Workspace"を選択し、"Next"をクリックします。
画面が切り替わるので、"Browse..."をクリックし、
先ほどCubeMXでつくったフォルダを選択し、"Finish"をクリックします。
すると"Project Explorer"に先ほど作った"Lchika"フォルダが見えますので、"Scr">"main.c"をダブルクリックします。
そうするとすでにコンフィグが記述されたソースコードが出てきます。
ここにコード書き足していきます。
(おいおい、"Project Explorer"なんて出てこんぞ?ってかたは、上の"Window"から>"Perspective">"Open Perspective">"Other...">"C/C++(default)を選択してください。
多分出てくると思います。)
書き足すコードはたった2行。
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5)
HAL_Delay(2000);
これだけです。このコードを下記のように記入してください。
(場所も関係あります。必ずmain関数のwhileの中に記入してください。)
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_USART2_UART_Init();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5)
HAL_Delay(2000);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
分かりやすくするため、できるだけ省略せずに載せました。
コードの中身は、「2秒ごとにPA5(LEDが繋がるピン)をオンオフするよー」と書いています。
つまり、LEDが2秒周期についたり消えたりします。
記述したら、保存をしてください。
Buildをする
プログラムを書き終えましたので、Buildします。
Buildは画面左上の金槌マークです。ここをクリックしましょう。
下のコンソール画面に忙しく英語が表示されると思います。
最後に青字で、Build Finished. 0 errors, 0 warningsと表示されればBuildは完了です。
ミスった場合は、記述内容を確認してください。
ボードに書き込み
いよいよボードに書き込みです。
マイコンボードをPCに接続しましょう。
接続したら、書き込みです。
ツールバーの再生ボタンようなアイコンの隣の▲をクリックし、"Run As">"Ac6 STM32 C/C++ Application"をクリックします。
クリックするとウィンドウが表示されるので、"Lchika.elf"を選択してOKを押します。
さて、どうでしょうか。LEDはチカチカしていますか?
チカチカしてれば成功です。
あとはdelayの秒数を変えてみたりしてスタートラインに立ったとニヤニヤしましょう。
感想
いやー、結構時間が掛かりましたねぇ。
こんなにかかる予定ではなかったのですが、いろいろ手こずってしまいました。
やはりマイコンの一番の峠は開発環境の構築だという持論が強化された気分です。
ただやはりこのLチカが成功した気分はいいものです。
何はともあれ、とりあえずはSTM32をいじくれる環境が出来上がったので、次回からはこれを使ってモノを動かしたりできればいいかなと思っております。
それでは。
参考
今回はこちらのサイト様を参考にさせていただきました。
https://nucleo87.webnode.jp/nucleo%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0/l%E3%83%81%E3%82%AB%E3%81%97%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86%EF%BC%81/
コメント