BC Racing DR Coilover Kit DH-TYPE レクサス SC430 UZZ40 2005- 品番:R-11-DH BCレーシング コイルオーバーキット 車高調

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

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

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

Kit レクサス 品番:R-11-DH UZZ40 2005- SC430 Coilover コイルオーバーキット BC 車高調 Coilover DR UZZ40 BCレーシング Racing DH-TYPE

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

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


この入力はスクリプトからでも REPL からでもかまいません ■DIXCEL(ディクセル) JZX100 マーク2 クレスタ チェイサー MARK 2 CRESTA CHASER 96/9~01/06 ブレーキローター フロント FP TYPE KARO(カロ)SISAL(シザル) トヨタ チェイサー GX、MX、RX6# S55/10~S59/08 FR フロアマット。この関数は引数をとらず、数値 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])


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