rp2040

RP2040 Programming without SDK
Log | Files | Refs

commit 63eab8fbe31f5bc1c0c03f3b1f3a4006a505d9b9
parent 1e9eece3b084803d80217f22740f15131da505ef
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Sun, 19 Mar 2023 13:43:18 +0900

make function for reset

Diffstat:
Mmain.s | 47++++++++++++++++-------------------------------
1 file changed, 16 insertions(+), 31 deletions(-)

diff --git a/main.s b/main.s @@ -1,23 +1,13 @@ .section .text .global main main: - // reset gpio -// ldr r0, resets_base -// ldr r1, atomic_clr -// add r0, r0, r1 -// mov r1, #0x1 -// lsl r1, r1, #5 // io_bank0 -// str r1, [r0, #0] // RESETS_RESET - mov r0, #1 - lsl r0, r0, #5 // io_bank0 + // reset gpio and pll_sys + mov r1, #1 + lsl r0, r1, #5 // io_bank0 + lsl r1, r1, #12 // pll_sys + add r0, r0, r1 bl reset - - // check if reset is done - ldr r0, resets_base -gpio_reset_chk: - ldr r2, [r0, #0x8] // RESETS_RESET_DONE - and r1, r1, r2 - beq gpio_reset_chk + bl wait_reset // set gpio24 funct as sio ldr r0, io_bank0_base @@ -53,21 +43,6 @@ xosc_stable: lsr r1, r1, #31 beq xosc_stable - // reset pll - ldr r0, resets_base - ldr r1, atomic_clr - add r0, r0, r1 - mov r1, #0x1 - lsl r1, r1, #12 // pll_sys - str r1, [r0, #0] // RESETS_RESET - - // check if reset is done - ldr r0, resets_base -pll_reset_chk: - ldr r2, [r0, #0x8] // RESETS_RESET_DONE - and r1, r1, r2 - beq pll_reset_chk - // set feedback divider ldr r0, pll_sys_base mov r1, #0x14 @@ -120,6 +95,16 @@ reset: ldr r2, atomic_clr add r1, r1, r2 str r0, [r1, #0] // RESETS_RESET + bx lr + +wait_reset: + // wait for subsystems specified by r0 to reset done + ldr r1, resets_base +reset_chk: + ldr r2, [r1, #0x8] // RESETS_RESET_DONE + and r0, r0, r2 + beq reset_chk + bx lr led_blink: push {lr}