コンテンツへスキップ

DSP空挺団

STM32G0 HAL のEXTIコールバックに非互換性

by

STM32G0のHALのEXTIは、コールバックの名前が変更になっています。これはアプリケーション・コードとの間で非互換問題を起こします。

STM32G0 HALのユーザーズマニュアルUm2319 Rev 1.0は、3.11.2節でこう書いています。

When selecting EXTI mode with interrupt generation, the user must call HAL_GPIO_EXTI_IRQHandler() from stm32g0xx_it.c and implement HAL_GPIO_EXTI_Callback()

UM2319 Rev 1

CubeIDEはこれに従い、EXTI割り込みが発生するとHAL_GPIO_EXTI_IRQHandler()を呼び出すコードを生成します。

ですのでユーザーはこれに従ってHAL_GPIO_EXTI_Callback()関数を実装し、割り込みを待ちます。ユーザーがHAL_…という名前の関数を実装するのは居心地が悪いですが、割り込みにおけるこの方法はSTMのHALの割り込み実装で一貫したやり方です。

さて、STM32G0ではこの方法でアプリケーションを書いても全く割り込みをキャッチできません。STM32G0 HALのEXTIコールバックは次のように書かなければなりません。

  • void HAL_GPIO_EXTI_Rising_Callback (uint16_t GPIO_Pin)
  • void HAL_GPIO_EXTI_Falling_Callback (uint16_t GPIO_Pin)

キサンナンシヨンカ(北九州市の方言)。

私が調べた限り他のシリーズでは冒頭に述べたHAL_GPIO_EXTI_Callback()を使います。調査したのは以下のシリーズです

  • STM32F0 HAL
  • STM32F4 HAL
  • STM32F7 HAL
  • STM32G4 HAL
  • STM32L1 HAL
  • STM32L4 HAL

要するにSTM32G0 HALのEXTI実装はこれらのHALとの互換性をぶち壊してしまっています。Hardware Abstraction という言葉に正面から唾を吐きかける行為です。

この問題はSTのコミュニティで修正を要請していまです。

コメントする コメントをキャンセル

Wordpress Hashcash needs javascript to work, but your browser has javascript disabled. Your comment will be queued in Akismet!

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

AltStyle によって変換されたページ (->オリジナル) /