エアロパーツ Universal Car hood Black pin Lock kits Aluminum For Fiberglass OEM Steel Hood ユニバーサル車のボンネットブラックピンロックキットアルミガラス繊維OEMスチールフード

ここでは MicroPython でインラインアセンブラを書く方法を学びます。

注記: これは上級者向けのチュートリアルです。マイクロコントローラとアセンブル言語について既に知っている方を対象としています。

MicroPython にはインラインアセンブラがあります。アセンブリ言語のルーチンを Python 関数として書いて、普通の Python 関数と同様に呼び出せます。

Car エアロパーツ Universal Hood hood エアロパーツ OEM Fiberglass kits Black Aluminum Universal Steel For pin Lock ユニバーサル車のボンネットブラックピンロックキットアルミガラス繊維OEMスチールフード

インラインアセンブラ関数は特殊な関数デコレータで示します。最も単純な例から始めてみましょう。

@micropython.asm_thumb
def fun():
 movw(r0, 42)


この入力はスクリプトからでも REPL からでもかまいません 【送料無料】テクノピア アフロディーテ IS 17インチ 215/45R17 215/45-17 136/BRZ タイヤ付き ホイール 組込・バランス調整 4本セット CRIMSON(クリムソン) CLUB LINEA L612 (クラブリネア L612) 20インチ 9.5J PCD:115 穴数:5 inset:28 DISK TYPE:HIGH カラー:ブラックサイドマシニング [ホイール1本単位]/H。この関数は引数をとらず、数値 42 を返します。 r0 はレジスタで、関数が返るときのこのレジスタの値が戻り値になります。MicroPython は、常に r0 を整数として解釈し、それを呼び出し元の整数オブジェクトに変換します。

print(fun()) を実行すると、42 が印字されるでしょう。

10.2. ペリフェラルへのアクセス

もう少し複雑な例として、LED を点灯してみましょう:

@micropython.asm_thumb
def led_on():
 movwt(r0, stm.GPIOA)
 movw(r1, 1 << 13)
 strh(r1, [r0, stm.GPIO_BSRRL])


このコードでは新しい概念をいくつか使います: