【手抜き】STM32の使い方まとめ 1.STM32CubeIDEの導入とLチカ

#前書き
引用主体の記事です（ひどい）。
基本は[今日の引用](#今日の引用)に沿って進めてください。


#テーマ概要
STMってArduinoでもMbedでもできるわけですが…　やはりHALでやりましょうよ！っていうだけです。
ロボットやってる人にとってはその方が確実に便利なことがたくさんあるので。

Arduinoを使う場合のArduinoIDEに相当するSTM版の紹介です。
Arduinoを使う場合はArduinoIDEを使うわけですが、STMの場合はそのようなソフトがいろいろありました。
TrueStudio, SW4 など…チーム開発の時に問題になるんですよね。
最近になってマイコンのメーカーが**STMCubeIDE**を出しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481835/4769558b-1fa0-ae58-0beb-b8f937d94c05.png)
これに統一させたいというメーカーの意向が感じられる次第です。
このソフトには

- ピンと機能の設定をGUIでする（CubeMX）
- プログラムを書く(eclipse)
- 書き込みデバッグする(OpenOCD)(STMStudio??)

がまとめられています。（カッコ内は元ソフトの名称）

#今日の引用
CubeIDEの導入に当たっては@usashirouさんのがよかったです。。素晴らしい…
次の補足も読みつつ引用先に従ってください。

> [STM32CubeIDEを使ってみよう　How To STM32CubeIDE 日本語版　Lチカ編](https://qiita.com/usashirou/items/65be086c28f7a6feac7d)

>[STM32CubeIDEを使ってみよう　How To STM32CubeIDE 日本語版　(2)](https://qiita.com/usashirou/items/c49a0b14c1fc6df22e5d)

#引用の補足
###PC
私の環境は

|||
| --- | :---: |
| Windows10 | 1809 |
|CubeIDE|1.2.1|
|Nucleo|F303k8 or F446RE|
ですが、特に問題は出ておりません。

###ダウンロードとstのアカウント
stのソフトをダウンロードする場合、ライセンスのacceptと個人情報系（？）を入力させられます。。
アカウント作ってもよし、逐一記入するもよし…

###日本語化（任意）
<font color="Red">(2020/03/09 こちらのサイトに移動しました。)</font>
[3.STM32CubeIDEの日本語化](https://qiita.com/nabeya11/items/fb6e0c4fe3156e307f6a)

###文字化け
<font color="Red">(2020/03/09 こちらのサイトに移動しました。)</font>

[番外.STM32CubeIDEと日本語の文字化け](https://qiita.com/nabeya11/items/beac1586510d357bf911)


###使用するボードの選択
>ここから使用するボードを選択します。

について、
![image.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F285344%2F3fd1795f-4691-9b7a-33bc-96caf43ff857.jpeg?ixlib=rb-1.2.2&auto=compress%2Cformat&fit=max&s=8ea5c0853807475a3fdcaf4bcd442ce6)
(画像by引用)
画像の左側のチェックボックスで右のボードリストを絞る、ということであります。

###ProjectNameについて
全角や半角スペース、妙な記号はバグりますよ（やってる人がいたので書いとく）

###説明されていない二連続YESについて
#### default settings
一つ目はこの画像。
![image.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F285344%2F3efcebb6-7188-61b5-2295-5428e40250ab.jpeg?ixlib=rb-1.2.2&auto=compress%2Cformat&fit=max&s=5148d285bdc675256e257552e791b1be)
これは、MCUではなくボードをえらんだ場合なのですが、ボードがつないでいる機能(STlinkへの書き込み線・uart、ユーザースイッチ、LEDなど)をあらかじめ設定するかどうかのダイアログです。
![image.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F285344%2Fd145d169-e573-cf8c-631e-94173ad9ff05.jpeg?ixlib=rb-1.2.2&auto=compress%2Cformat&fit=max&s=fc70db1744b1a9efee933585400d39eb)
そのダイアログでYesとすると上のように、Noとすれば下のようになります。
緑ピンがセッティング済みです。
ピンがかぶらないようにYesにすることがおすすめです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481835/24009609-993f-9511-afa1-e792be4084db.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481835/ad830558-517e-ddbe-a3f4-5ce065f26cbe.png)
（例えばこの画像のようなLEDの出力ピンの設定があるはずです）

#### Perspective
![image.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F285344%2F8f1d47d2-298b-d5b4-8311-22dfb4845109.jpeg?ixlib=rb-1.2.2&auto=compress%2Cformat&fit=max&s=be22ae3c4b1ab952095f220a461992b8)
これはCubeIDEもとい、その母体であるEclipseの仕様で、タブのような仕組みとしてパースペクティブという物が存在します。
表示している画面構成全体を切り替える…説明ムズイので省略。
このダイアログ自身は、
「新しいプロジェクトを作成した時に勝手にパースペクティブを切り替えるようにされてますけど切り替えていいですか？」（英語意訳）でしょう。使いやすいのでYesですね。
日本語化するとこう見えるので日本語化おすすめ（）
「Remember my decision」はこれ以降聞かない（今回の選択が以降に反映）ようになります
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481835/6aeb5dc4-382b-3277-e897-7c92fc2c34f1.png)

なおパースペクティブは右上のアイコンみたいなところで切り替えます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481835/6396e9a0-a27b-95c4-92fc-b4209c265cbe.png)

この画面はCマークがついたアイコンのパースペクティブですね。
![image.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481835/b08a1ca5-f520-d9e0-254e-e97e0e7fb99c.jpeg)


###main.cが見当たらない or マイコン画面のほうで設定をいじったとき
マイコンの図が見える状態でctrl+s（保存）するとこのようなダイアログが出るでしょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481835/64d281d4-01d0-c252-b545-c29e9c007db8.png)
これをYESすると生成されると思います。


###自分で書くプログラム部分について
``` C
/*USER CODE BEGIN xxx*/
```
から

```
/*USER CODE END xxx*/
```
の間に書いてください。マイコン画面のほうでgenerateし直すとその区間以外のコードは書き換わってしまいます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481835/48cfe728-4032-2d72-35ac-4a0f635fa890.png)

#うまく動かない場合
可能性の提示
###Javaruntimeのインストール
Javaがインストールされてないとうまく動かないことがあるかもしれません。しらんけど。
64bit版を入れろと怒られたことがあります。

###ワークスペースについて
CubeIDE起動時に出てくるワークスペースのパス指定画面ですが、なるべくパスは短くした方がよいようです。

#相互リンク(随時更新@2020/03/09)
**【手抜き】STM32の使い方まとめ**
（まだない記事は今後変更の可能性があります）

- [0.STM32のご説明](https://qiita.com/nabeya11/items/9ee076933983ed7ae3b6)
- [1.STM32CubeIDEの導入とLチカ](https://qiita.com/nabeya11/items/0859271c1307d88d6891)
- 2.GPIOでデジタル入力
- [3.STM32CubeIDEの日本語化](https://qiita.com/nabeya11/items/fb6e0c4fe3156e307f6a)
- 4.STM32CubeIDEでGit
- 5.標準タイマを使う
- 6.タイマ割り込みで等時間制御
- 7.PWM波形の出力
- 8.I2CのMemWrite/Read()
- 8.Encoderモードの使い方
- 9.UART~送信:DMAとprintf少数表示まで~
- 10.MCSDKでブラシレスモータを回す
- 11.RS485
- 12.CAN
- 13.STM32CubeIDEでデバッグ
- [番外. 「私、マクロを使えって言ったよね！？」](https://qiita.com/nabeya11/items/c901c5c0ccd61f9cc01a)
- [番外.STM32CubeIDEと日本語の文字化け](https://qiita.com/nabeya11/items/beac1586510d357bf911)