rp2040

RP2040 Programming without SDK
Log | Files | Refs

commit b5a8285479ca22755f493e59f99d6ff882df1363
parent 1467a54682a9b18ad2124e8d906defaa899d11f1
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Thu, 16 Mar 2023 14:01:12 +0900

use xosc

Diffstat:
Mmain.s | 32++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+), 0 deletions(-)

diff --git a/main.s b/main.s @@ -1,6 +1,38 @@ .section .text .global main main: + // set xosc delay + ldr r0, xosc_base + mov r1, #47 + str r1, [r0, #0xc] // XOSC_STARTUP + + // enable xosc + ldr r1, atomic_set + add r0, r0, r1 + mov r1, #0xf + lsl r1, r1, #8 + add r1, r1, #0xab + lsl r1, r1, #8 + add r1, r1, #0xaa + lsl r1, r1, #4 + str r1, [r0, #0] // XOSC_CTRL + + // wait for xosc startup + ldr r0, xosc_base +xosc_stable: + ldr r1, [r0, #0x4] + lsr r1, r1, #31 + beq xosc_stable + + // set ref clock to xosc + ldr r0, clocks_base + mov r1, #2 + str r1, [r0, #0x30] // CLOCKS_CLK_REF_CTRL + + // set sys clock to ref + mov r1, #0 + str r1, [r0, #0x3c] // CLOCKS_CLK_SYS_CTRL + // reset gpio ldr r0, resets_base ldr r1, atomic_clr