nRF HAL の紹介
ほかの例に進む前に、まず nRF51、nRF52、nRF91 ファミリーのマイクロコントローラー向け Hardware Abstraction Layer(HAL)を紹介します。
すでにご存じかもしれませんが、micro:bit v2 は Nordic の nRF52833 マイクロコントローラーを使用しています。
これまでは BSP レベルのクレートを扱ってきました。ここからは、HAL へさらに 1 層深く進みます。そのために、nRF52833 もサポートしている nrf-hal を使用します。
詳細については、nrf-hal GitHub リポジトリ を参照してください。さまざまなユースケース向けの例も含まれています。
Blinky の書き換え
シンプルにするために、nrf-hal を使って blinky の例を書き換えてみましょう。
プロジェクトをゼロから作成する場合、通常は nrf52833-hal を依存関係として手動で追加します。ただし、ここではすでにそれを含んでいるテンプレートを使用します。テンプレートの Cargo.toml には、次のような行があります。
nrf52833-hal = "0.18.0" # テンプレート内ではバージョンが異なる可能性があります
テンプレートからプロジェクトを作成
テンプレートを使って新しいプロジェクトを生成するには、次のコマンドを実行します。
cargo generate --git https://github.com/ImplFerris/mb2-template.git --rev 88d339b
プロジェクト名の入力を求められたら、led-blinky のような名前を入力してください(すでにこの名前のプロジェクトがある場合は、別の名前を使うか、私のように HAL ベースのプロジェクトを別のフォルダーに配置してください)。
「BSP」または「HAL」を選択するよう求められたら、「HAL」を選択してください。