⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uart_test.s

📁 《ARM嵌入式应用开发技术白金手册》源代码
💻 S
字号:
						   ;使GPIO Port B作为输出口 
   AREA PROGRAM, CODE, READONLY

LEDFLASH    EQU	0x61
PORTADIR	    EQU	0xFF          
PORTDDIR	    EQU	0x00
PORTB	    EQU	0x0F
PORTA	    EQU	0xAA
PORTD	    EQU	0x2A                               ;Port A/B/D

SBADDR      EQU  0x80000000
rMEMCFG1    EQU  SBADDR+0x0180
rMEMCFG2    EQU  SBADDR+0x01C0

FlashBase	     EQU  0x70000000                ; Flash基址
HwRegBase	     EQU  0x80000000                ;寄存器基址
hw_syscon1  	EQU	  0x0100
hw_uart1	     EQU  0x0100                    ;串口
hw_9600		EQU	  0x0017
hw_sysflg1	     EQU  0x0140                    ;标志位
hw_sysflg2	     EQU  0x1140

hw_wrdlen8	     EQU  0x00060000
hw_ubrlcr1	     EQU  0x04c0
hw_uartdr1	     EQU	  0x0480
hw_uart1busy	EQU	  0x00000800                ;串口忙
hw_urxfe1	     EQU	  0x00400000
hw_utxff1	     EQU	  0x00800000
bootbase	     EQU	  0x00000000        ;引导基址
bootlength	     EQU  0x0080                    ;引导长度

	ENTRY                                       ;程序入口

MemConfig1value  EQU 0x00000004
MemConfig2value  EQU 0x00000000                     ;rom引导和内部SRAM忽略      
                                                    ; 配置nCS0-nCS3
        ldr r1,=MemConfig1value
        ldr r12,=rMEMCFG1
        str r1,[r12]                                ;MEMCFG1 = 0x8000.0180
                                                    ;配置nCS4 &nCS5
        ldr r1,=MemConfig2value
        ldr r12,=rMEMCFG2
        str r1,[r12]                                ;MEMCFG2 = 0x8000.01c0

	ldr	r0, =0x80002000
	mov r1,#LEDFLASH                            ;r1=0x61
	str r1,[r0,#0x2c0]
	ldr	r12, =0x80000000
	ldrb	r1,=PORTADIR
	strb 	r1,[r12,#0x40]
	ldrb	r1,=PORTDDIR
	strb	r1,[r12,#0x43]
	ldrb	r1,=PORTA
	strb	r1,[r12,#0x00]	
	ldrb	r1,=PORTD
	strb	r1,[r12,#0x03]
	mov r7,#'('
	str r7,[r12,#hw_uartdr1]

	mov r2,#FlashBase
	add r3,r2,#bootlength
sentloop 	                                    ;发送循环
	mov r4,#0x001
	mov r5,#0x100
	nop	
	wait
	ldr r4,[r12,#hw_sysflg1]
	ldrb	r1,=0x20
	strb	r1,[r12,#0x03]
	tst r4,#hw_utxff1                           ;测试位
	ldrb	r1,=0x08
	strb	r1,[r12,#0x03]	
	
	beq gopp                             	    ;相等跳转
	b wait                                      ;否则等待
gopp
	ldrb	r1,=0x40
	strb	r1,[r12,#0x03]
 	ldrb r7,[r2],#1
 	str r7,[r12,#hw_uartdr1]
	ldrb	r1,=0x10
	strb	r1,[r12,#0x03]

	cmp r2,r3                                   ;比较r2、r3
 	blt sentloop                                ;r2<r3,继续发送
 
	mov r7,#')'
	str r7,[r12,#hw_uartdr1] 
current	 	                                    ;原地跳转
	b current
	;
        END                                         ;程序结束

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -