📄 uart0.txt
字号:
0002cc e59f11d0 LDR r1,|L1.1188|
0002d0 e5810000 STR r0,[r1,#0] ; save_UMCON1
;;;160 }
0002d4 e12fff1e BX lr
ENDP
Uart_Port_Return PROC
;;;162 void Uart_Port_Return(void)
;;;163 {
0002d8 e59f0194 LDR r0,|L1.1140|
;;;164 //Pop UART GPIO port configuration
;;;165 rGPCON_U=save_rGPCON_U;
0002dc e5900000 LDR r0,[r0,#0] ; save_rGPCON_U
0002e0 e59f1188 LDR r1,|L1.1136|
0002e4 e5810000 STR r0,[r1,#0]
;;;166 rGPDAT=save_rGPDAT;
0002e8 e59f0188 LDR r0,|L1.1144|
0002ec e5900000 LDR r0,[r0,#0] ; save_rGPDAT
0002f0 e581000c STR r0,[r1,#0xc]
;;;167 rGPPU=save_rGPUP;
0002f4 e59f0180 LDR r0,|L1.1148|
0002f8 e5900000 LDR r0,[r0,#0] ; save_rGPUP
0002fc e5810010 STR r0,[r1,#0x10]
;;;168 //Pop Uart control registers
;;;169 rULCON0=save_ULCON0;
000300 e59f0178 LDR r0,|L1.1152|
000304 e5900000 LDR r0,[r0,#0] ; save_ULCON0
000308 e2411840 SUB r1,r1,#0x400000
00030c e5810000 STR r0,[r1,#0]
;;;170 rUCON0 =save_UCON0;
000310 e59f0170 LDR r0,|L1.1160|
000314 e5900000 LDR r0,[r0,#0] ; save_UCON0
000318 e5810004 STR r0,[r1,#4]
;;;171 rUFCON0=save_UFCON0;
00031c e59f0168 LDR r0,|L1.1164|
000320 e5900000 LDR r0,[r0,#0] ; save_UFCON0
000324 e5810008 STR r0,[r1,#8]
;;;172 rUMCON0=save_UMCON0;
000328 e59f0160 LDR r0,|L1.1168|
00032c e5900000 LDR r0,[r0,#0] ; save_UMCON0
000330 e581000c STR r0,[r1,#0xc]
;;;173 rULCON1=save_ULCON1;
000334 e59f015c LDR r0,|L1.1176|
000338 e5900000 LDR r0,[r0,#0] ; save_ULCON1
00033c e2811c40 ADD r1,r1,#0x4000
000340 e5810000 STR r0,[r1,#0]
;;;174 rUCON1 =save_UCON1;
000344 e59f0150 LDR r0,|L1.1180|
000348 e5900000 LDR r0,[r0,#0] ; save_UCON1
00034c e5810004 STR r0,[r1,#4]
;;;175 rUFCON1=save_UFCON1;
000350 e59f0148 LDR r0,|L1.1184|
000354 e5900000 LDR r0,[r0,#0] ; save_UFCON1
000358 e5810008 STR r0,[r1,#8]
;;;176 rUMCON1=save_UMCON1;
00035c e59f0140 LDR r0,|L1.1188|
000360 e5900000 LDR r0,[r0,#0] ; save_UMCON1
000364 e581000c STR r0,[r1,#0xc]
;;;177 }
000368 e12fff1e BX lr
ENDP
Uart_Uclk_En PROC
;;;179 void Uart_Uclk_En(int ch,int baud)
;;;180 {
00036c e92d4030 STMFD sp!,{r4,r5,lr}
000370 e24dd014 SUB sp,sp,#0x14
000374 e1a04000 MOV r4,r0
000378 e1a05001 MOV r5,r1
;;;181
;;;182 //int ch, baud;
;;;183 Uart_Printf("\nSelect UART channel[0:UART0/1:UART1/2:UART2]:\n");
00037c e28f0f49 ADR r0,|L1.1192|
000380 ebfffffe BL _printf
;;;184 ch=Uart_GetIntNum();
000384 ebfffffe BL Uart_GetIntNum
000388 e1a04000 MOV r4,r0
;;;185 Uart_Printf("\nSelect baud rate :");
00038c e28f0f51 ADR r0,|L1.1240|
000390 ebfffffe BL _printf
;;;186 baud=Uart_GetIntNum();
000394 ebfffffe BL Uart_GetIntNum
000398 e1a05000 MOV r5,r0
;;;187
;;;188 if(ch == 0) {
00039c e3540000 CMP r4,#0
0003a0 1a000016 BNE |L1.1024|
;;;189 Uart_Select(0);
0003a4 e3a00000 MOV r0,#0
0003a8 ebfffffe BL Uart_Select
;;;190 rUCON0|=0x400; // Select UCLK
0003ac e59f00d0 LDR r0,|L1.1156|
0003b0 e5900004 LDR r0,[r0,#4]
0003b4 e3800e40 ORR r0,r0,#0x400
0003b8 e59f10c4 LDR r1,|L1.1156|
0003bc e5810004 STR r0,[r1,#4]
;;;191 rUBRDIV0=( (int)(UCLK/16./baud) -1 ); //Baud rate divisior register
0003c0 e1a00005 MOV r0,r5
0003c4 ebfffffe BL _dflt
0003c8 e98d0003 STMIB sp,{r0,r1}
0003cc e28f0f46 ADR r0,|L1.1260|
0003d0 e890000c LDMIA r0,{r2,r3}
0003d4 e59d0004 LDR r0,[sp,#4]
0003d8 ebfffffe BL _drdiv
0003dc e58d000c STR r0,[sp,#0xc]
0003e0 e58d1010 STR r1,[sp,#0x10]
0003e4 ebfffffe BL _dfix
0003e8 e2400001 SUB r0,r0,#1
0003ec e59f1090 LDR r1,|L1.1156|
0003f0 e5810028 STR r0,[r1,#0x28]
;;;192 Uart_Printf("UCLK is enabled by UART0.\n");
0003f4 e28f00f8 ADR r0,|L1.1268|
0003f8 ebfffffe BL _printf
0003fc ea000019 B |L1.1128|
;;;193 }
;;;194 else if(ch==1){
|L1.1024|
000400 e3540001 CMP r4,#1
000404 1a000017 BNE |L1.1128|
;;;195 Uart_Select(1);
000408 e3a00001 MOV r0,#1
00040c ebfffffe BL Uart_Select
;;;196 rUCON1|=0x400; // Select UCLK
000410 e59f007c LDR r0,|L1.1172|
000414 e5900004 LDR r0,[r0,#4]
000418 e3800e40 ORR r0,r0,#0x400
00041c e59f1070 LDR r1,|L1.1172|
000420 e5810004 STR r0,[r1,#4]
;;;197 rUBRDIV1=( (int)(UCLK/16./baud) -1 ); //Baud rate divisior register
000424 e1a00005 MOV r0,r5
000428 ebfffffe BL _dflt
00042c e98d0003 STMIB sp,{r0,r1}
000430 e28f00b4 ADR r0,|L1.1260|
000434 e890000c LDMIA r0,{r2,r3}
000438 e59d0004 LDR r0,[sp,#4]
00043c ebfffffe BL _drdiv
000440 e58d000c STR r0,[sp,#0xc]
000444 e58d1010 STR r1,[sp,#0x10]
000448 ebfffffe BL _dfix
00044c e2400001 SUB r0,r0,#1
000450 e59f103c LDR r1,|L1.1172|
000454 e5810028 STR r0,[r1,#0x28]
;;;198 Uart_Select(0);
000458 e3a00000 MOV r0,#0
00045c ebfffffe BL Uart_Select
;;;199 Uart_Printf("UCLK is enabled by UART1.\n");
000460 e28f00a8 ADR r0,|L1.1296|
000464 ebfffffe BL _printf
;;;200 }
;;;201 //for(i=0;i<100;i++); // For the satble operation
;;;202 }
|L1.1128|
000468 e28dd014 ADD sp,sp,#0x14
00046c e8bd8030 LDMFD sp!,{r4,r5,pc}
|L1.1136|
000470 44800000 DCD 0x44800000
|L1.1140|
000474 00000048 DCD ||.bss$2|| + 72
|L1.1144|
000478 0000004c DCD ||.bss$2|| + 76
|L1.1148|
00047c 00000050 DCD ||.bss$2|| + 80
|L1.1152|
000480 00000054 DCD ||.bss$2|| + 84
|L1.1156|
000484 44400000 DCD 0x44400000
|L1.1160|
000488 00000058 DCD ||.bss$2|| + 88
|L1.1164|
00048c 0000005c DCD ||.bss$2|| + 92
|L1.1168|
000490 00000060 DCD ||.bss$2|| + 96
|L1.1172|
000494 44404000 DCD 0x44404000
|L1.1176|
000498 00000064 DCD ||.bss$2|| + 100
|L1.1180|
00049c 00000068 DCD ||.bss$2|| + 104
|L1.1184|
0004a0 0000006c DCD ||.bss$2|| + 108
|L1.1188|
0004a4 00000070 DCD ||.bss$2|| + 112
|L1.1192|
0004a8 6c65530a DCB "\nSel"
0004ac 20746365 DCB "ect "
0004b0 54524155 DCB "UART"
0004b4 61686320 DCB " cha"
0004b8 6c656e6e DCB "nnel"
0004bc 553a305b DCB "[0:U"
0004c0 30545241 DCB "ART0"
0004c4 553a312f DCB "/1:U"
0004c8 31545241 DCB "ART1"
0004cc 553a322f DCB "/2:U"
0004d0 32545241 DCB "ART2"
0004d4 000a3a5d DCB "]:\n\0"
|L1.1240|
0004d8 6c65530a DCB "\nSel"
0004dc 20746365 DCB "ect "
0004e0 64756162 DCB "baud"
0004e4 74617220 DCB " rat"
0004e8 003a2065 DCB "e :\0"
|L1.1260|
0004ec 00000000 DCFD 0x4146e36000000000
0004f0 4146e360
|L1.1268|
0004f4 4b4c4355 DCB "UCLK"
0004f8 20736920 DCB " is "
0004fc 62616e65 DCB "enab"
000500 2064656c DCB "led "
000504 55207962 DCB "by U"
000508 30545241 DCB "ART0"
00050c 00000a2e DCB ".\n\0\0"
|L1.1296|
000510 4b4c4355 DCB "UCLK"
000514 20736920 DCB " is "
000518 62616e65 DCB "enab"
00051c 2064656c DCB "led "
000520 55207962 DCB "by U"
000524 31545241 DCB "ART1"
000528 00000a2e DCB ".\n\0\0"
ENDP
Uart_Pclk_En PROC
;;;204 void Uart_Pclk_En(int ch, int baud)
;;;205 {
00052c e92d4030 STMFD sp!,{r4,r5,lr}
000530 e24dd014 SUB sp,sp,#0x14
000534 e1a04000 MOV r4,r0
000538 e1a05001 MOV r5,r1
;;;206 /*
;;;207 int ch, baud;
;;;208 Uart_Printf("\nSelect UART channel[0:UART0/1:UART1/2:UART2]:\n");
;;;209 ch=Uart_GetIntNum();
;;;210 Uart_Printf("\nSelect baud rate :\n");
;;;211 baud=Uart_GetIntNum();
;;;212 */
;;;213
;;;214 if(ch == 0) {
00053c e3540000 CMP r4,#0
000540 1a000017 BNE |L1.1444|
;;;215 Uart_Select(0);
000544 e3a00000 MOV r0,#0
000548 ebfffffe BL Uart_Select
;;;216 rUCON0&=0x3ff; // Select PCLK
00054c e51f00d0 LDR r0,|L1.1156|
000550 e5900004 LDR r0,[r0,#4]
000554 e1a00b00 MOV r0,r0,LSL #22
000558 e1a00b20 MOV r0,r0,LSR #22
00055c e51f10e0 LDR r1,|L1.1156|
000560 e5810004 STR r0,[r1,#4]
;;;217 rUBRDIV0=( (int)(PCLK/16./baud) -1 ); //Baud rate divisior register
000564 e1a00005 MOV r0,r5
000568 ebfffffe BL _dflt
00056c e98d0003 STMIB sp,{r0,r1}
000570 e28f00a0 ADR r0,|L1.1560|
000574 e890000c LDMIA r0,{r2,r3}
000578 e59d0004 LDR r0,[sp,#4]
00057c ebfffffe BL _drdiv
000580 e58d000c STR r0,[sp,#0xc]
000584 e58d1010 STR r1,[sp,#0x10]
000588 ebfffffe BL _dfix
00058c e2400001 SUB r0,r0,#1
000590 e51f1114 LDR r1,|L1.1156|
000594 e5810028 STR r0,[r1,#0x28]
;;;218 Uart_Printf("PCLK is enabled by UART0.\n");
000598 e28f0080 ADR r0,|L1.1568|
00059c ebfffffe BL _printf
0005a0 ea00001a B |L1.1552|
;;;219 }
;;;220 else if(ch==1){
|L1.1444|
0005a4 e3540001 CMP r4,#1
0005a8 1a000018 BNE |L1.1552|
;;;221 Uart_Select(1);
0005ac e3a00001 MOV r0,#1
0005b0 ebfffffe BL Uart_Select
;;;222 rUCON1|=0x3ff; // Select PCLK
0005b4 e51f0128 LDR r0,|L1.1172|
0005b8 e5900004 LDR r0,[r0,#4]
0005bc e3800fc0 ORR r0,r0,#0x300
0005c0 e38000ff ORR r0,r0,#0xff
0005c4 e51f1138 LDR r1,|L1.1172|
0005c8 e5810004 STR r0,[r1,#4]
;;;223 rUBRDIV1=( (int)(PCLK/16./baud) -1 ); //Baud rate divisior register
0005cc e1a00005 MOV r0,r5
0005d0 ebfffffe BL _dflt
0005d4 e98d0003 STMIB sp,{r0,r1}
0005d8 e28f0038 ADR r0,|L1.1560|
0005dc e890000c LDMIA r0,{r2,r3}
0005e0 e59d0004 LDR r0,[sp,#4]
0005e4 ebfffffe BL _drdiv
0005e8 e58d000c STR r0,[sp,#0xc]
0005ec e58d1010 STR r1,[sp,#0x10]
0005f0 ebfffffe BL _dfix
0005f4 e2400001 SUB r0,r0,#1
0005f8 e51f116c LDR r1,|L1.1172|
0005fc e5810028 STR r0,[r1,#0x28]
;;;224 Uart_Select(0);
000600 e3a00000 MOV r0,#0
000604 ebfffffe BL Uart_Select
;;;225 Uart_Printf("PCLK is enabled by UART1.\n");
000608 e28f002c ADR r0,|L1.1596|
00060c ebfffffe BL _printf
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -