stm
--- STM32 MCU に固有の機能¶
このモジュールは、ペリフェラルレジスタへの直接アクセスなど、STM32 マイクロコントローラに特有の機能を提供します。
メモリーアクセス¶
このモジュールは、直接のメモリアクセスに使う3つのオブジェクトを公開しています。
-
stm.
mem8
¶ 8ビット単位の列でメモリを読み取り/書き込みします。
-
stm.
mem16
¶ 16ビット単位の列でメモリを読み取り/書き込みします。
-
stm.
mem32
¶ 32ビット単位の列でメモリを読み取り/書き込みします。
これらのオブジェクトにインデックスを付けるには、添え字表記 [...]
を使って、目的のアドレスを指定します。
これらのメモリオブジェクトは、ペリフェラルレジスタ定数と組み合わせて、MCU ハードウェアペリフェラルレジスタや、その他のすべてのアドレス空間の領域を読み書きするために使えます。
ペリフェラルレジスタ定数¶
このモジュールでは、CMSIS ヘッダファイルから生成されるレジスタの定数を定義していて、コンパイル対象のマイクロコントローラシリーズに応じて利用できる定数が異なります。定数の例としては以下のようなものがあります。
-
stm.
GPIOA
¶ GPIOA ペリフェラルのベースアドレス
-
stm.
GPIOB
¶ GPIOB ペリフェラルのベースアドレス
-
stm.
GPIO_BSRR
¶ GPIO ビットセット/リセットレジスタのオフセット
-
stm.
GPIO_IDR
¶ GPIO 入力データレジスタのオフセット
-
stm.
GPIO_ODR
¶ GPIO 出力データレジスタのオフセット
GPIOA
のようにペリフェラルの名前が付いている定数は、そのペリフェラルの絶対アドレスです。GPIO_BSRR
のように、ペリフェラルの名前をプレフィックスに持つ定数は、レジスタの相対オフセットです。ペリフェラルのレジスタにアクセスするには、周辺機器の絶対ベースアドレスと相対レジスタオフセットを加算する必要があります。たとえば GPIOA + GPIO_BSRR
は GPIOA->BSRR
レジスタの絶対アドレスとなります。
使用例:
# PA2 をハイにセット
stm.mem32[stm.GPIOA + stm.GPIO_BSRR] = 1 << 2
# PA3 を読取り
value = (stm.mem32[stm.GPIOA + stm.GPIO_IDR] >> 3) & 1
STM32WBxx MCU に固有の関数¶
これらの関数は STM32WBxx マイクロコントローラで利用でき、第2のCPUであるRFコアと相互に連携します。
-
stm.
rfcore_status
()¶ 2つ目のCPUの状態を整数で返します(デバイス情報テーブルの第1ワード)。
-
stm.
rfcore_fw_version
(id)¶ 2つ目のCPUで動作しているファームウェアのバージョンを取得します。 id に 0 を渡すと FUS バージョン、1 を渡すと WS バージョンを取得します。
完全なバージョン番号を5項目の5タプルで返します。
-
stm.
rfcore_sys_hci
(ogf, ocf, data, timeout_ms=0)¶ SYS チャンネルで HCI コマンドを実行します。実行は同期しています。
SYS コマンドの結果をバイト列オブジェクトで返します。