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_BSRRGPIOA->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 コマンドの結果をバイト列オブジェクトで返します。