微處理器 - WCH CH32V003 (nanoCH32V003) - Assembly - Button



參考資訊:
https://github.com/ch32-rs/wlink
file:///home/steward/Downloads/CH32V003RM.PDF
https://github.com/AdiHamulic/CH32V003-Bare-Metal
https://github.com/ch32-rs/wlink/blob/main/docs/references.md
https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases/tag/v14.2.0-3

按鍵是連接到C2


IOPDEN


暫存器位址


I/O Mode


Out


In


main.s

    .global _start
 
    .equ RCC_APB2PCENR,   0x40021018
    .equ R32_GPIOD_CFGLR, 0x40011400
    .equ R32_GPIOC_CFGLR, 0x40011000
    .equ R32_GPIOD_OUTDR, 0x4001140c
    .equ R32_GPIOC_OUTDR, 0x4001100c
    .equ R32_GPIOC_INDR,  0x40011008

    .align 2	
    .option norvc
    .text
    j _start
   
    .org 0x0300
_start:
    li t0, (1 << 5) | (1 << 4)
    li a0, RCC_APB2PCENR
    sw t0, 0(a0)

    li t0, (1 << 11)
    li a0, R32_GPIOC_CFGLR
    sw t0, 0(a0)

    li t0, (1 << 24)
    li a0, R32_GPIOD_CFGLR
    sw t0, 0(a0)

    li t0, (1 << 2)
    li a0, R32_GPIOC_OUTDR
    sw t0, 0(a0)

    li a0, R32_GPIOD_OUTDR
    li a1, R32_GPIOC_INDR
    li a2, (1 << 6)
0:
    lw t0, 0(a1)
    sll t0, t0, 4
    xor t0, t0, a2
    sw t0, 0(a0)
    j 0b
    .end

完成