STM32L1 HALのI2C APIに非互換性

上記の問題を発見しました。

STM32CubeIDE 1.0.2でSTM32L152といったMCUのプロジェクトを生成すると、一部のAPIが過去のAPIと互換性を失った形でプロジェクトが作られます。

具体的には、HALのマニュアルで”Sequential”なI2C APIとして紹介されたものが軒並み非互換になっています。例えば、以下のAPIはUM1816 Rev.5にSTM32L1のAPIとして紹介されています。

HAL_I2C_Master_Sequential_Transmit_IT()

ところが、今日現在のSTM32L1 HALは上記APIを提供していません。そのかわり、以下のAPIが存在しています。

HAL_I2C_Master_Seq_Transmit_IT()

もう、何がおきたかわかってしまいましたね。HALのAPIの名前を変えています。ところが、他のシリーズ(STM32F4など)でも同様な名前変更があるにもかかわらず、問題は起きていません。なぜかというと、stm32_hal_legacy.h で吸収しているからです。

どうやらSTはこの名前変更への互換マクロを提供する際、STM32L1のことをすっかり忘れていたようです。

この問題はコミュニティに報告済みです。

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください