Skip to content

Cube IDE の使い方

このページでは、講習会のスライドをベースにCubeIDEの基本的使い方を説明します。 デバックなどの機能についての説明は割愛しています。必要に応じて、STMのドキュメントやネット上の情報を参照してください。

目次

image

CubeIDEの使い方

プロジェクトの作成まで

image

ワークスペースの選択

ワークスペースはプロジェクトを管理するためのフォルダです。任意の場所に作成してください。
パスに日本語が入っていると、後々ビルドエラーになる可能性があるので、英数字のみのパスを選択することをおすすめします。

imageimage

メニューバー、またはメインウィンドウのアイコンから、プロジェクトの作成を開始します。

image

プロジェクトの作成

ここでは、プロジェクトの名前と、ターゲットマイコンを選択します。
今回はNucleo G474REを選択していますが、使用しているボードに合わせて選択してください。

imageimageimageimageimage

プロジェクトの作成完了

プロジェクトが正しく作成されると、プロジェクトエクスプローラーにプロジェクトが表示されます。

ライブラリの追加

image

ライブラリの追加

bash
mkdir Library
cd Library
git submodule add https://github.com/NITIC-Robot-Club/HALbed.git

image

プロジェクトの設定

次にプロジェクトの設定を行います。 imageimage

インクルードパスの追加

プロジェクトのプロパティから、C/C++ General -> Paths and Symbols -> Includes -> GNU C++を選択し、インクルードパスにLibrary/HALbed/Incを追加します。

他のライブラリを追加する場合

インクルードパスの追加は、追加するライブラリごとに行う必要があります。
例えば、Library/AnotherLib/Incを追加する場合は、同様にインクルードパスに追加してください。

image

ビルドの設定

プロジェクトのプロパティから、C/C++ General -> Paths and Symbols -> Source Locationを選択し、Libraryフォルダをソースフォルダとして追加します。
これにより、Libraryフォルダ内のソースコードもビルドの対象になります。
ビルド設定は設定されたフォルダの中を再帰的に検索するため、Libraryフォルダを追加すれば、HALbedや他のライブラリも自動的にビルドされます。

image

floatのサポート

HALbedはfloatを使用しています。プロジェクトのプロパティから、C/C++ Build -> Settings -> Tool Settings -> MCU Settings を選択し、
Floating Point Unit/Floating point ABI でFPUが有効化されていることを確認してください。
Use float with... にチェックを入れてください。

app_mainの作成

プロジェクトのSrcフォルダに、app_main.cppというファイルを作成し、以下のコードを追加してください。 imageimageimage

app_mainの呼び出し

main.capp_main.cppのコード(app_main())が呼び出されるようにします。

cpp
/* USER CODE BEGIN 2 */
extern void app_main(void);
app_main();
/* USER CODE END 2 */

Lチカをしてみよう

image

.ioc ファイルの編集(CubeMX)

imageimageimage

Lチカのコード

app_main.cppに以下のコードを追加してください。

cpp
#include "main.h"
#include "../../Library/HALbed/Inc/HALbed.hpp"

using namespace HALbed;
DigitalOut LED(PA_5);

extern "C" void app_main(void) {
    while (1)
    {
        for (int i = 0; i < 5; i++){
            LED.toggle();  // 点滅
            HAL_Delay(500);
        }
        for (int i = 0; i < 20; i++){
            LED = 1;  // 点灯
            HAL_Delay(100);
            LED = 0;  // 消灯
            HAL_Delay(100);
        }
        for (int i = 0; i < 40; i++){
            LED.write(!LED.read());
            HAL_Delay(50);
        }
    }
}

DigitalOutの使い方については、APIリファレンスを参照してください。

ビルドと書きこみ

imageimageimage

Last updated: