STM32CubeMXは組み込み開発で最も面倒で退屈なハードウェアの初期化部分をGUIを使って設定して初期化済みのプログラムテンプレートを生成してくれるツールです。
統合開発環境JDEはSTM32CubeMXが生成したプロジェクトをインポートすることが出来るようになりました。
ここではSTM32CubeMXが生成したプロジェクトをベースにJDEのプロジェクトを作る手順を簡単に説明します。
1.STM32CubeMXで作成したプロジェクトを出力するためにProject → Settingsを開きます。
2.Project Settings画面のToolchain/IDE設定でTrueSTUDIOを選び GenerateUnderRootのチェックを外します。
他の項目はそのままでOKです。
3.Project → Generate Codeをクリックしてコードを生成します。
4.Codeが生成されたらそのままメッセージを閉じます。
プロジェクト保存場所に次のようなフォルダとファイルが作成されているはずです。
5.JDEを開き新規プロジェクトを作成します
プロジェクトを作成する場所はSTM32CubeMXでプロジェクトを保存したフォルダにして下さい。
6.JDEのCpudef(CPU定義)はSTM32CubeMXのHALライブラリと同じものを選んでください。
7.CPU定義ファイルだけのプロジェクトが作成されます。
8.TrueStudioプロジェクトインポートメニューを開きます。
9.インポート元としてTrueSTUDIOプロジェクトを指定して、開くをクリックします
10.プロジェクトがインポートされ、ライブラリとソースファイルを含むプロジェクトツリーが表示されます。
プロジェクトのシンボル定義でプロジェクトの構築に必要なのは上の2行です、赤枠で囲んだ部分はコンパイルエラーの原因になるので削除してください。
11.プロジェクトは構築可能になっているはずです、再構築ボタンをクリックしてコンパイルしてみます。
12.下のコンパイルメッセージに「コンパイルとリンクが終わりました」と表示されればテストOKです。
13.STM32CubeMXが生成したプロジェクトは次のような構成になっています。
./Drivers/の下にあるファイルはHALライブラリで通常は変更する必要ありません。
./Src/の下にあるファイルを修正、追加してプログラムを作っていきます。
例えばmain.cは次のような内容です
/* USER CODE BEGIN … */ と/* USER CODE END …*/で囲まれた部分はSTM32CubeMXで設定を変更してプロジェクトを再生成しても変更されずに残りますのでこの部分にユーザーコードを追加していきます。
/* Includes ------------------------------------------------------------------*/ #include "main.h" #include "stm32f1xx_hal.h" // ※ ここに追加したコードはSTM32CubeMXでプロジェクトを再生成すると失われる /* USER CODE BEGIN Includes */ // ※ ここに書いたコードはSTM32CubeMXの影響を受けない /* USER CODE END Includes */ /* Private variables ---------------------------------------------------------*/ TIM_HandleTypeDef htim5; /* USER CODE BEGIN PV */ /* Private variables ---------------------------------------------------------*/ /* USER CODE END PV */ /* Private function prototypes -----------------------------------------------*/ void SystemClock_Config(void); void Error_Handler(void); static void MX_GPIO_Init(void); static void MX_TIM5_Init(void); void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); /* USER CODE BEGIN PFP */ /* Private function prototypes -----------------------------------------------*/ /* USER CODE END PFP */ /* USER CODE BEGIN 0 */ /* USER CODE END 0 */ 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(); /* Configure the system clock */ SystemClock_Config(); /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_TIM5_Init(); /* USER CODE BEGIN 2 */ /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ } /** System Clock Configuration */ void SystemClock_Config(void) { .. この後に初期化関数が続きます。