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) で消える
というあたり。
次は
手続き、というか関数 (?) が出てくる模様。もう少し時間があるので読んでみます。