import array as arr
regdata = arr.array('i',[
0x40014000, # IO_BANK0_BASE
0xd0000000 # SIO_BASE
])
@micropython.asm_thumb
def config_led(r0):
ldr(r1, [r0, 0])
mov(r2, 5) # Function 5, select SIO for GPIO0
str(r2, [r1, 0x04]) # GPIO0_CTRL
ldr(r1, [r0, 4]) # dirección base de SIO
mov(r2, 1) # carga 1 para GPIO0
str(r2, [r1, 0x24]) # 0x24 GPIO output enable
config_led(regdata)
@micropython.asm_thumb
def delay():
mov(r0, 1)
lsl(r0, r0, 25) # Número muy grande
label(loop)
sub (r0, 1) # resta 1 del registro r0
bne (loop)
@micropython.asm_thumb
def led_on(r0):
ldr(r1, [r0, 4]) # dirección base de SIO
mov(r2, 1) # carga 1 para GPIO0
str(r2, [r1, 0x14]) # 0x14 GPIO output value set
@micropython.asm_thumb
def led_off(r0):
ldr(r1, [r0, 4]) # dirección base de SIO
mov(r2, 1) # carga 1 para GPIO0
str(r2, [r1, 0x18]) # 0x18 GPIO output value clear
while(1):
led_on(regdata)
delay()
led_off(regdata)
delay()
while(1):
blink(regdata)