1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| ENTRY(printascii) //添加debug串口寄存器地址 addruart_current r3, r1, r2 //检查寄存器 r0 是否为 0,r0 通常存储字符串的起始地址。如果为 0,表示字符串为空 1: teq r0, #0 // r0 不为 0 的情况下,从地址 r0 加载一个字节到寄存器 r1,并将 r0 自增 1 ldrbne r1, [r0], #1 //检查加载的字节是否为字符串的结束符(\0) teqne r1, #0 //如果当前字符是结束符,返回到调用者 reteq lr //处理换行符 2: teq r1, #'\n' //检查当前字符是否是换行符(\n) bne 3f //如果不是换行符,跳转到标签 3 mov r1, #'\r' //如果是换行符,将其替换为回车符(\r),并通过 UART 发送。 #ifdef CONFIG_DEBUG_UART_FLOW_CONTROL waituartcts r2, r3 #endif waituarttxrdy r2, r3 senduart r1, r3 busyuart r2, r3 mov r1, #'\n' //将换行符(\n)加载到 r1,准备发送 //发送其他字符 3: #ifdef CONFIG_DEBUG_UART_FLOW_CONTROL waituartcts r2, r3 #endif waituarttxrdy r2, r3 senduart r1, r3 busyuart r2, r3 b 1b ENDPROC(printascii)
|