Baking Pi (3)

OK02 な main.s ですが GPFSEL1 (0x7E200004) の FSEL16 を output にして

mov r1,#1
lsl r1,#18

str r1,[r0,#4]

r1 レジスタの 16 番目のフラグを立てて

mov r1,#1
lsl r1,#16

その直後にラベルを付けてます。

loop$:

ここから点滅の繰り返し。
OK01 と同様に GPCLR0 (0x7E200028) の 16 番目のフラグを立てて

str r1,[r0,#40]

待機。ここは初めて出てくる記述ですね。

mov r2,#0x3F0000
wait1$:
        sub r2,#1
        cmp r2,#0
        bne wait1$

で、次に GPSET0 (0x7E20001C) の 16 番目のフラグを立てて

str r1,[r0,#28]

再び待機しつつ loop なラベルに戻っています。

mov r2,#0x3F0000
wait2$:
    sub r2,#1
    cmp r2,#0
    bne wait2$

b loop$

なんとなく未だに異和感があるのは

  • GPCLR (GPIO Pin Output Clear 0) で点いて
  • GPSET (GPIO Pin Output Set 0) で消える

というあたり。

次は

手続き、というか関数 (?) が出てくる模様。もう少し時間があるので読んでみます。