今回はCubeMXのライブラリをアップデートした際に
遭遇した不具合?について共有したいと思います。
先日リリースされたSTM32CubeMX4.2.0
とSTM32CubeF3 1.7.0を適用しました。
その後、STM32CubeF3 1.6.0で生成した
CubeMXのプロジェクトファイル(*.ioc)を開いて、
再度、別のコードを生成すると
・HALドライバはSTM32CubeF3 1.6.0
・自動生成コードはSTM32CubeF3 1.7.0という
現象が発生しました。
そのため、STM32CubeF3 v1.7.0から増えたパラメータ
htimX.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
がHALドライバにないため、
コンパイルが通らないという現象が発生しました。
設定はSTM32CubeF3 1.6.0から読み込む設定です。
STM32CubeF3 1.6.0で生成したCubeMXの
プロジェクトファイル(*.ioc)を流用せずに
0から新規プロジェクトで生成すると上手くバージョンが一致したコードが生成されました。
古いバージョンで生成したプロジェクトファイル(*.ioc)は
テンプレートの読み込み先を最新にするか、
0から新規プロジェクトで生成するのが良さそうです。
特に新しい機能が追加された場合、
旧ドライバにない機能をコメントアウトで対応できますが、
新機能が不定となる可能性もあり、
別の不具合を起こす可能性もあるので、統一した方がよいと思いました。
バージョンアップするとこいう不具合が起きたりするので、
アップデートを見送るか、適用するか悩ましいものです。
ちなみに新しく増えたパラメータAutoReloadPreloadは
TIMx_ARR registerのバッファ有無切替が可能なようですが、
どのような効果があるのか、
資料を見つけられず良く分かりませんでした。
また、追って調査してみたいと思います。
**追記**
おすすめできる方法ではありませが、
あとから再度、旧ライブラリで生成する場合は
*.iocファイルをテキストエディタで開いて、
V1.X.X.Xの部分を書き換えるのが手っ取り早い方法と分かりました。