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