rp2040

RP2040 Programming without SDK
Log | Files | Refs

commit c3565a1440c02ce651b2777620a691f3c45f87ac
parent b84291ba5f64e2f91580e2548163ef91ea898ea5
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Mon, 20 Mar 2023 09:19:41 +0900

add led for debugging

Diffstat:
Mmain.s | 42++++++++++++++++++++++++++++++------------
1 file changed, 30 insertions(+), 12 deletions(-)

diff --git a/main.s b/main.s @@ -11,14 +11,16 @@ main: // set gpio24 funct as sio ldr r0, io_bank0_base - add r0, r0, #0xc4 mov r1, #5 + add r0, r0, #0xb4 // io_bank0_gpio22_ctrl + str r1, [r0, #0] + add r0, r0, #0x10 // io_bank0_gpio24_ctrl str r1, [r0, #0] // enable gpio output ldr r0, sio_base - mov r1, #1 - lsl r1, r1, #24 + mov r1, #5 + lsl r1, r1, #22 // gpio22 and gpio24 str r1, [r0, #0x24] // enable xosc @@ -84,7 +86,8 @@ pll_lock: str r1, [r0, #0x3c] // CLOCKS_CLK_SYS_CTRL loop: - bl led_blink + bl p0 + bl p1 b loop // functions @@ -92,6 +95,7 @@ loop: unreset: // unreset subsystems specified by r0 // args: bit mask to specify the subsystems to unreset + // return: the bit mask same as the arg ldr r1, resets_base ldr r2, atomic_clr add r1, r1, r2 @@ -100,6 +104,8 @@ unreset: wait_unreset: // wait for subsystems specified by r0 to reset done + // args: bit mask to specify the subsystems to wait for + // return: void ldr r1, resets_base reset_chk: ldr r2, [r1, #0x8] // RESETS_RESET_DONE @@ -107,17 +113,29 @@ reset_chk: beq reset_chk bx lr +p0: + // blink led on gpio24 + push {lr} + mov r0, #1 + lsl r0, r0, #24 + bl led_blink + pop {pc} + +p1: + // blink led on gpio22 + push {lr} + mov r0, #1 + lsl r0, r0, #22 + bl led_blink + pop {pc} + led_blink: push {lr} - ldr r0, sio_base - mov r1, #1 - lsl r1, r1, #24 - mov r3, #0 - // assert gpio24 - str r1, [r0, #0x10] + ldr r1, sio_base + mov r2, #0 + str r0, [r1, #0x10] // SIO_GPIO_OUT_SET bl delay - // deassert gpio24 - str r3, [r0, #0x10] + str r0, [r1, #0x18] // SIO_GPIO_OUT_CLR bl delay pop {pc}