參考資訊:
https://github.com/ghidraninja/game-and-watch-backup
https://www.st.com/resource/en/datasheet/stm32h7b0vb.pdf
https://www.st.com/resource/en/reference_manual/dm00463927-stm32h7a37b3-and-stm32h7b0-value-line-advanced-armbased-32bit-mcus-stmicroelectronics.pdf
UART使用到的腳位為PA-2(USART2_TX)、PA-3(USART2_RX)

USART2EN=1

USART234578SEL=3(HSI Clock)

TE=1、UE=1

Baudrate計算方式如下:
Baudrate = USART_KER_CKPRES/USART_DIV = 64000000/556 = 115108 ~= 115200

TC是傳送完成旗標

傳送資料

GPIOAEN=1

MODER2=2

AFR2=7(USART2)


main.s
.equiv PORTA_BASE, 0x58020000
.equiv PORTC_BASE, 0x58020800
.equiv PORTE_BASE, 0x58021000
.equiv GPIO_MODER, 0x0000
.equiv GPIO_ODR, 0x0014
.equiv GPIO_AFRL, 0x0020
.equiv RCC_BASE, 0x58024400
.equiv RCC_AHB4ENR, 0x0140
.equiv RCC_APB4ENR, 0x0154
.equiv RCC_CDCCIP2R, 0x0054
.equiv RCC_APB1LENR, 0x0148
.equiv USART2_BASE, 0x40004400
.equiv USART_CR1, 0x0000
.equiv USART_BRR, 0x000c
.equiv USART_ISR, 0x001c
.equiv USART_TDR, 0x0028
.thumb
.cpu cortex-m7
.syntax unified
.global _start
.text
.org 0x0000
_start:
.word 0x20020000
.word reset
.org 0x0100
.thumb_func
reset:
ldr r0, =RCC_BASE
ldr r1, [r0, #RCC_APB1LENR]
orr r1, #(1 << 17)
str r1, [r0, #RCC_APB1LENR]
ldr r1, [r0, #RCC_AHB4ENR]
orr r1, #(1 << 0)
str r1, [r0, #RCC_AHB4ENR]
ldr r0, =RCC_BASE
ldr r1, [r0, #RCC_CDCCIP2R]
bic r1, #0x07
orr r1, #0x03
str r1, [r0, #RCC_CDCCIP2R]
ldr r0, =PORTA_BASE
ldr r1, [r0, #GPIO_MODER]
bic r1, #0xf0
orr r1, #(2 << 4)
str r1, [r0, #GPIO_MODER]
ldr r1, [r0, #GPIO_AFRL]
bic r1, #0xf00
orr r1, #(7 << 8)
str r1, [r0, #GPIO_AFRL]
ldr r0, =USART2_BASE
ldr r1, =0x22c
str r1, [r0, #USART_BRR]
ldr r1, [r0, #USART_CR1]
orr r1, #0x09
str r1, [r0, #USART_CR1]
ldr r0, =USART2_BASE
ldr r2, =hello
1:
ldr r1, [r0, #USART_ISR]
tst r1, #(1 << 6)
beq 1b
ldrb r1, [r2]
strb r1, [r0, #USART_TDR]
add r2, #1
cmp r1, #0
bne 1b
b .
.align
hello: .asciz "Hello, world!"
.end
接線如下

完成