HALは、主にプログラムの移植性を上げるために使用されます。HALを使用すると、プロフラムを移植する際に、周辺機能などのハードウェアが異なる場合でも、HALより上位層のプログラムに変更を加えることなく移植することができます。
例えば、同じSTM32マイコンの中でもSTM32F4シリーズとSTM32F0シリーズ*4)では、ペリフェラルクロック有効レジスタの構成が異なります。STM32F4シリーズには3つありますが、STM32F0シリーズには1つしかありません。そのため、汎用IOのAを有効化する際のレジスタたたきの記述が異なります。しかし、HALを使用すれば同じ記述にすることができます(図4)
すなわち、HALで記述していれば、プログラムを変更することなくSTM32F0シリーズとSTM32F4シリーズ間でプログラムを移植できます。
*4)https://www.stmcu.jp/stm32/stm32f0/
また、記述から設定内容を簡単に理解できるのもユーザーにとって大きなメリットです。HALの記述から直接操作内容が読み取れるため、プログラムコードを書きやすくなり、間違いの防止にもなります。
HALは、マイコン(シリーズ)ごとに異なるため、説明書を読んで内容を理解する必要があります。開発手順が増えるというデメリットに思われるかもしれませんが、説明書はそれほど難しくないので、簡単に理解できるでしょう。また、一度理解してしまえば、後はサクサクとプログラムを作ることができます。
本記事で使用したSTM32F4マイコンのHALの説明書については、「UM1725 User Manual Description of STM32F4xx HAL drivers」を参照してください。
レジスタとRAMの違い
汎用I/Oの構造はどうなっているの? 使い方は?
未使用GPIO(汎用I/O)の処理はどうすれば良いの?
マイコンにおけるメモリ外付け(メモリ増設)方法
CORDICって何?
NMI(ノンマスカブル割り込み)って何?Copyright © ITmedia, Inc. All Rights Reserved.
記事ランキング