STM32CubeMX Ver4.17でmain.hが自動的に生成されるようになった

STM32CubeMXで古いプロジェクトを読み込むと

STM32CubeMX Ver4.17で古いプロジェクトを読み込むと「最新のライブラリを使いますか?」といった意味のウィンドウが表示されます。
stm32cube417

私は新しもの好きなのでたいていの場合、あまり考えずにMigrateボタンをクリックして新バージョンのライブラリを使います。
たいていの場合はそのままエラー無しでコンパイル出来るのですが今回はちょっと困った変更が入っていました。

変更の内容:main.hが自動的に作成される。

そのせいで共通のインクルードや定義を記述して使っていたmain.hという名前のインクルードファイルが上書きされて消えてしまいました。

/* Define to prevent recursive inclusion -------------------------------------*/
 #ifndef __MAIN_H
 #define __MAIN_H
 /* Includes ------------------------------------------------------------------*/

/* USER CODE BEGIN Includes */

/* USER CODE END Includes */

/* Private define ------------------------------------------------------------*/

/* USER CODE BEGIN Private defines */

/* USER CODE END Private defines */

/**
 * @}
 */

/**
 * @}
 */

STM32CubeMXでは
/* USER CODE BEGIN xxxx */

/* USER CODE END xxxx */
の間に書いたコードはプロジェクトを更新しても保存されるのでままで使っていたコードをこの中に移せばOKかと思ったら、FreeRTOSを使っている場合にヘッダファイルの挿入位置の関係で訳のわからないエラーが発生してしばらく悩んでしまいました。

結局 今まで使っていたmain.hを_main.h という名前に替えて読み込むようにして解決しましたが、STM32CubeMXのファームウェアライブラリはこのようなコンパイルエラーの原因となる変更が時々あるので気をつける必要があります。

ま、いったん動いたプロジェクトは古いライブラリのままで使えば問題ないのですけど、
ライブラリを最新のものにしないと取り残されるような気がして無節操にアップデートしてしまう自分の責任で起きたトラブルで下。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)