Gaviar (小志掌機) >> Assembly
UART
參考資訊:
1. ws2812c
2. Delay_slot
3. FlatHeadBro
UART是連接到PB2、PB3
PB2、PB3
CCU位址
APB1(HOSC 24MHz)
Baudrate Table(24MHz)
UART4位址
UART暫存器
main.s
.global _start .equ CCU_BASE, 0x02001000 .equ GPIO_BASE, 0x02000000 .equ UART4_BASE, 0x02501000 .equ PB_CFG0, 0x0030 .equ UART_BGR_REG, 0x090c .equ RBR, 0x0000 .equ THR, 0x0000 .equ DLL, 0x0000 .equ DLH, 0x0004 .equ IER, 0x0004 .equ IIR, 0x0008 .equ LCR, 0x000c .equ MCR, 0x0010 .equ LSR, 0x0014 .equ USR, 0x007c .text .long 0x4000006f .byte 'e','G','O','N','.','B','T','0' .long 0x5F0A6C39 .long 0x8000 .long 0, 0 .long 0, 0, 0, 0, 0, 0, 0, 0 .long 0, 0, 0, 0, 0, 0, 0, 0 .org 0x0400 _start: li t0, 0x7700 li a0, GPIO_BASE + PB_CFG0 sw t0, 0(a0) li t0, (1 << 20) | (1 << 4) li a0, CCU_BASE + UART_BGR_REG sw t0, 0(a0) li t0, 0 li a0, UART4_BASE + IER sw t0, 0(a0) li t0, 0 li a0, UART4_BASE + MCR sw t0, 0(a0) li a0, UART4_BASE + LCR lw t0, 0(a0) li t1, (1 << 7) or t0, t0, t1 sw t0, 0(a0) li t0, 13 li a0, UART4_BASE + DLL sw t0, 0(a0) li t0, 0 li a0, UART4_BASE + DLH sw t0, 0(a0) li a0, UART4_BASE + LCR lw t0, 0(a0) li t1, ~(1 << 7) and t0, t0, t1 sw t0, 0(a0) lw t0, 0(a0) li t1, ~(0x1f) and t0, t0, t1 li t1, 0x03 or t0, t0, t1 sw t0, 0(a0) la a1, hello 0: li a0, UART4_BASE + LSR lw t0, 0(a0) li t1, (1 << 5) and t0, t0, t1 beqz t0, 0b li t0, 0 lb t0, 0(a1) li a0, UART4_BASE + THR sb t0, 0(a0) add a1, a1, 1 bgtz t0, 0b 1: j 1b .align hello: .asciz "Hello, world!" .end
完成