【手抜き】STM32の使い方まとめ 4.STM32CubeIDEでGit

#前書き
引用主体の記事です（ひどい）。
基本は[今日の引用](#今日の引用)に沿って進めてください。
[やっておきたい設定](#やっておきたい設定)と[ignoreする・しない](#ignoreするしない)がこの記事の目玉です。


#テーマ概要

Gitを扱うにはいろいろな方法(ソフト)がありますし、CUI,GUI論争もあるかと思います…
ともあれSTMを使うGUIユーザーにお勧めです。
一つのソフトですべてできることが、統合開発環境(IDE)の醍醐味ですね。

#今日の引用
初めてQiitaの外からの引用になります。Qiitaでは記事が多すぎていいものが見つけられなかったです
> [EclipseでGitを使ってみる](https://www.blog.danishi.net/2019/04/30/post-866/#toc_id_2_1)

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

|||
| --- | :---: |
| Windows10 | 1909 |
|CubeIDE|1.2.1|
|Nucleo|F303k8 or F446RE|
ですが、特に問題は出ておりません。
以降ではCubeIDEを日本語化したもので説明しています。
[3.STM32CubeIDEの日本語化](https://qiita.com/nabeya11/items/fb6e0c4fe3156e307f6a)

### パースペクティブ
これはCubeIDEの母体であるEclipseの用語なのですが、きれいに説明されてませんね…

CubeIDEの画面にはフォルダマップやコード、コンソール画面などの「ビュー」がたくさん表示されます。
コードを書く＆ビルドするときは上記を使う一方、デバッグするときはデバッグ内容の表示など別のビューが表示されてほしいですよね？
そのために、そのビューの開き方、並べ方をプリセットする機能がパースペクティブで、画面の右上あたりにあります。

CubeIDEはデフォルトで、C/C++,Debug,DeviceConfigTool(CubeMX)の三つのパースペクティブが存在すると思います。
デバッグを走らせるとDebugパースペクティブに自動で切り替えたり、iocファイルを開くとCubeMXパースペクティブが開いたりするはずです。
(最初はそれをするか・しないかのプロンプトが出てくる)

参照
[Eclipse用語「ワークベンチ」「パースペクティブ」「エディター」「ビュー」「ワークスペース」について](https://www.hitachi.co.jp/Prod/comp/soft1/cosminexus/useful/tips/081202_eclipse-workbench-workspace.html)

### やっておきたい設定

####1.クローン先ディレクトリ
デフォルトではgitのclone先ディレクトリが`C:/users/[ユーザー名]/Git`になっています。
開いているワークスペースのディレクトリとは違う（参照状態）のは、後々のバグの原因となり得ます。
そこで、クローン先を開いているワークスペースに変えます。
上バー「ウィンドウ」→設定→チーム→Git から
「デフォルト・リポジトリ・フォルダ」を`${workspace_loc}`にする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481835/9aa9b743-6747-7971-707c-43b0a130ced5.png)

####2.必要なビューの表示
「Gitステージング」
コミットするときに使用しますが、最初に表示されてなかった気がします。
Gitパースペクティブを開いた状態で「ウィンドウ→ビューの表示→Gitステージング」です。
「ヒストリー」
「Gitリポジトリ―」にあるリポジトリを選択した時に、コミットとブランチのグラフが見えます。規模によっては重宝するかも？

####3.Gitのツールバー表示
マージやチェックアウトなどをボタン一つでしたい
Gitパースペクティブにて
・「ウィンドウ→パースペクティブ→パースペクティブのカスタマイズ」から
「アクションセット可用性」及び「メニュー可用性」のGitに✅
・「Toolbar Visibility」にてツールバーにほしいアイテムを選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481835/b066ee59-9579-a18f-11bf-db6f958d5e8b.png)
自分の選択ははこんな感じですね
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481835/461bcb63-af88-7f10-f21e-d8242238ab86.png)


### ignoreする・しない

ちょっと問題になりますよね…ignoreして無かったら何もいじってないのに変更がかかってgit操作が面倒になるケース、
逆に必要なものがaddされてなくて面倒になるケース…

CubeIDEのGUI(Egit)でリポジトリを構築した場合、gitignoreが自動生成されます。

####ignoreすべきもの
・/Debug/ /Release/
まあビルドした時に生成されるファイルですから本質の変更とは無関係な変更となります。
・/.settings/
単語辞書ファイルが入ってます。そのため環境依存
・.mxproject
iocからgenerateしたときに生成されるもの、中を見るとプロジェクトのパスが書かれていて環境依存です。
・*.launch
デバッグや実行（書き込み）の時の設定ファイルです。
人によってはSTLink（ライター・デバッガー）を複数挿すため、そのID指定をすることがあると思います。よって環境依存となります。

####ignoreするべきでないもの
「しないべき」「してはいけない」という意味で
・.ioc
CubeMXのファイル（GUIピン設定など）
・.project
CubeIDE用語「プロジェクト」の設定ファイルです。これがあることでこのフォルダがプロジェクトであることを認識します。
これがないとクローンした時にワークスペースにインポート（表示）されないことがあります。
また、もしインポートされなかった場合、CubeIDEを開いた状態にしてエクスプローラで.projectをダブルクリックするときれいにインポートされます。
・.cproject
C/C++の設定ファイル（？）。プロジェクトの「プロパティ」にて設定した項目の一部はここに保存されてるようです。
-u_printf_float（printfのfloat表示）の設定が保存されていることを観測してます。

####未確認
・*.ld
このファイル何か知らないので勉強します。

### リポジトリの作り方と注意
お勧めはワークスペース丸ごとではなくて、その中のプロジェクトごとにリポジトリを作ることです。

問題はリモートにあるリポジトリをクローンするときですが、**プロジェクトフォルダ名と`.ioc`の名前を一致させる**必要があるので、
リモートリポジトリ名によってはクローンのローカルパスの最後を修正する必要があります。

#相互リンク(随時更新@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)