皆さん こんにちは。
今回は HAL と対比される LL についてお話します。
STM32には
HAL : Hardware Abstraction Layer に対して
LL : Low Layer が存在します。
LLの解説書 がありますので詳しくはこちらをご覧ください。
HALはSTM32シリーズの互換性を保つことやユーザーが記述するコード量を減らす目的でつくられました。
ですからHALは冗長性があるためにコード量が増えたり、高速動作が不得手などのデメリットがあります。
そこで高速に動かしたい時やコード量を減らしたい場合には LL を使うことを考えてみるのも一案です。
とは言え必ずしも HAL の方がコード量が多いわけでもなさそうです。
HAL と LL の共存も可能なようですから、臨機応変に使い分けてみるのが良いかも知れません。
その他注意点など
・STM32H7シリーズ はサポートされていない
・STM32CubeMX(CubeIDE)によりLL用の初期化コードを生成できる
・LLではサポートされていないペリフェラルがある
・基本的に同一ペリフェラルでHALとLLの両方を使わないこと
・LLではHALで用意しているハンドルなどのインスタンスは一切使用しない
・LL APIはHALと異なりSTM32ファミリ内での互換性は低い
※ 2017当初の資料には H7シリーズではLLをサポートしていない と書かれていたのですが、2020年現在はサポートされているようです。
次回は IDE を使って LL で初期化コードを生成する方法についてお話します。
お疲れさまでした。
コメントを書く