rp2040

RP2040 Programming without SDK
Log | Files | Refs

commit 9d89be5ee9e205aceb5d1455db0c4a484c2c3057
parent 796627f94ce9100afdc1973ffb5d64a83ba20e5d
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Thu, 27 Apr 2023 10:31:04 +0900

make led functions for debugging

Diffstat:
Mex2/main.s | 70++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------
1 file changed, 62 insertions(+), 8 deletions(-)

diff --git a/ex2/main.s b/ex2/main.s @@ -15,37 +15,91 @@ reset: ldr r1, atomic_clr str r0, [r3, r1] // RESETS: RESET -reset_chk: +unreset_chk: ldr r1, [r3, #0x8] // RESETS: RESET_DONE tst r0, r1 - beq reset_chk + beq unreset_chk // set gpio functions ldr r3, io_bank0_base mov r0, #5 // sio + mov r1, #0xc4 + str r0, [r3, r1] // IO_BANK0: GPIO24_CTRL mov r1, #0xcc str r0, [r3, r1] // IO_BANK0: GPIO25_CTRL // enable gpio output ldr r3, sio_base - mov r0, #1 - lsl r0, r0, #25 // gpio25 + mov r0, #3 + lsl r0, r0, #24 // gpio25 | gpio24 str r0, [r3, #0x24] // SIO: GPIO_OE + // setup xosc + + // blink led on gpio25 - ldr r4, sio_base - mov r5, r0 loop: - str r5, [r4, #0x1c] // SIO_GPIO_OUT_XOR - bl delay + bl bled0 + bl bled1 b loop +// functions + +// The following functions make no side effects and +// can be used anywhare without pushing and popping +// registers. + + // Print register content with 2 leds, lsb first. +pled: + push {r0, r1, r2, r3, r4, r5, r6, lr} + mov r4, r0 + mov r5, #32 + mov r6, #1 +pled_loop: + tst r4, r6 + beq pled0 + bl bled1 + b pled1 +pled0: + bl bled0 +pled1: + lsr r4, r4, #1 + sub r5, r5, #1 + bne pled_loop + pop {r0, r1, r2, r3, r4, r5, r6, pc} + +bled0: + push {r0, r1, r2, r3, lr} + mov r0, #1 + lsl r0, r0, #24 + bl bled + pop {r0, r1, r2, r3, pc} + +bled1: + push {r0, r1, r2, r3, lr} + mov r0, #1 + lsl r0, r0, #25 + bl bled + pop {r0, r1, r2, r3, pc} + +bled: + push {r0, r1, r2, r3, r4, r5, lr} + ldr r4, sio_base + mov r5, r0 + str r5, [r4, #0x10] // SIO: GPIO_OUT_XOR + bl delay + str r5, [r4, #0x18] // SIO: GPIO_OUT_XOR + bl delay + pop {r0, r1, r2, r3, r4, r5, pc} + delay: + push {r0} mov r0, #1 lsl r0, r0, #20 delay_loop: sub r0, r0, #1 bne delay_loop + pop {r0} bx lr // literals