📄 uart1.txt
字号:
0002c4 e3800a40 ORR r0,r0,#0x40000
0002c8 e3a0144a MOV r1,#0x4a000000
0002cc e5810008 STR r0,[r1,#8]
;;;80 ClearPending(BIT_DMA1);
0002d0 e3a00a40 MOV r0,#0x40000
0002d4 e3a0144a MOV r1,#0x4a000000
0002d8 e5810000 STR r0,[r1,#0]
0002dc e3a00a40 MOV r0,#0x40000
0002e0 e3a0144a MOV r1,#0x4a000000
0002e4 e5810010 STR r0,[r1,#0x10]
0002e8 e3a0044a MOV r0,#0x4a000000
0002ec e5900010 LDR r0,[r0,#0x10]
;;;81 }
0002f0 e8bd0003 LDMFD sp!,{r0,r1}
0002f4 e25ef004 SUBS pc,lr,#4
ENDP
Uart1_RxDmaDone PROC
;;;83 void __irq Uart1_RxDmaDone(void)
;;;84 {
0002f8 e92d0003 STMFD sp!,{r0,r1}
;;;85 rDMASKTRIG1=0x0; //DMA1 Channel Off
0002fc e3a00000 MOV r0,#0
000300 e3a0144b MOV r1,#0x4b000000
000304 e5810060 STR r0,[r1,#0x60]
;;;86 isDone=0;
000308 e3a00000 MOV r0,#0
00030c e59f10cc LDR r1,|L1.992|
000310 e5810000 STR r0,[r1,#0] ; isDone
;;;87 *(uart1RxStr+5)='\0';
000314 e3a00000 MOV r0,#0
000318 e51f1100 LDR r1,|L1.544|
00031c e5911000 LDR r1,[r1,#0] ; uart1RxStr
000320 e5c10005 STRB r0,[r1,#5]
;;;88 rINTMSK|=(BIT_DMA1);
000324 e3a0044a MOV r0,#0x4a000000
000328 e5900008 LDR r0,[r0,#8]
00032c e3800a40 ORR r0,r0,#0x40000
000330 e3a0144a MOV r1,#0x4a000000
000334 e5810008 STR r0,[r1,#8]
;;;89 ClearPending(BIT_DMA1);
000338 e3a00a40 MOV r0,#0x40000
00033c e3a0144a MOV r1,#0x4a000000
000340 e5810000 STR r0,[r1,#0]
000344 e3a00a40 MOV r0,#0x40000
000348 e3a0144a MOV r1,#0x4a000000
00034c e5810010 STR r0,[r1,#0x10]
000350 e3a0044a MOV r0,#0x4a000000
000354 e5900010 LDR r0,[r0,#0x10]
;;;90 }
000358 e8bd0003 LDMFD sp!,{r0,r1}
00035c e25ef004 SUBS pc,lr,#4
ENDP
Uart1_RxDmaOrErr PROC
;;;92 void __irq Uart1_RxDmaOrErr(void)
;;;93 {
000360 e92d500f STMFD sp!,{r0-r3,r12,lr}
;;;94 rINTSUBMSK|=(BIT_SUB_RXD1|BIT_SUB_TXD1|BIT_SUB_ERR1);
000364 e3a0044a MOV r0,#0x4a000000
000368 e590001c LDR r0,[r0,#0x1c]
00036c e3800038 ORR r0,r0,#0x38
000370 e3a0144a MOV r1,#0x4a000000
000374 e581001c STR r0,[r1,#0x1c]
;;;95 if(rSUBSRCPND&BIT_SUB_RXD1) Uart_Printf("Error : UART1 Rx Interrupt is occured!!!\n");
000378 e3a0044a MOV r0,#0x4a000000
00037c e5900018 LDR r0,[r0,#0x18]
000380 e3100008 TST r0,#8
000384 0a000002 BEQ |L1.916|
000388 e28f0054 ADR r0,|L1.996|
00038c ebfffffe BL Uart_Printf
000390 ea000000 B |L1.920|
;;;96 else __sub_Uart1_RxErrInt();
|L1.916|
000394 ebfffffe BL __sub_Uart1_RxErrInt
;;;97
;;;98 ClearPending(BIT_UART1);
|L1.920|
000398 e3a00880 MOV r0,#0x800000
00039c e3a0144a MOV r1,#0x4a000000
0003a0 e5810000 STR r0,[r1,#0]
0003a4 e3a00880 MOV r0,#0x800000
0003a8 e3a0144a MOV r1,#0x4a000000
0003ac e5810010 STR r0,[r1,#0x10]
0003b0 e3a0044a MOV r0,#0x4a000000
0003b4 e5900010 LDR r0,[r0,#0x10]
;;;99 rSUBSRCPND=(BIT_SUB_ERR1); // Clear Sub int pending
0003b8 e3a00020 MOV r0,#0x20
0003bc e3a0144a MOV r1,#0x4a000000
0003c0 e5810018 STR r0,[r1,#0x18]
;;;100 rINTSUBMSK&=~(BIT_SUB_ERR1);
0003c4 e3a0044a MOV r0,#0x4a000000
0003c8 e590001c LDR r0,[r0,#0x1c]
0003cc e3c00020 BIC r0,r0,#0x20
0003d0 e3a0144a MOV r1,#0x4a000000
0003d4 e581001c STR r0,[r1,#0x1c]
;;;101 }
0003d8 e8bd500f LDMFD sp!,{r0-r3,r12,lr}
0003dc e25ef004 SUBS pc,lr,#4
|L1.992|
0003e0 00000000 DCD isDone
|L1.996|
0003e4 6f727245 DCB "Erro"
0003e8 203a2072 DCB "r : "
0003ec 54524155 DCB "UART"
0003f0 78522031 DCB "1 Rx"
0003f4 746e4920 DCB " Int"
0003f8 75727265 DCB "erru"
0003fc 69207470 DCB "pt i"
000400 636f2073 DCB "s oc"
000404 65727563 DCB "cure"
000408 21212164 DCB "d!!!"
00040c 0000000a DCB "\n\0\0\0"
ENDP
__sub_Uart1_RxFifo PROC
;;;129 void __sub_Uart1_RxFifo(void)
;;;130 {
000410 e1a00000 NOP
;;;131 while(rUFSTAT1&0x7f) //During the Rx FIFO is not empty
|L1.1044|
000414 e51f02c0 LDR r0,|L1.348|
000418 e5900018 LDR r0,[r0,#0x18]
00041c e310007f TST r0,#0x7f
000420 0a00003d BEQ |L1.1308|
;;;132 {
;;;133 rx_point++;
000424 e59f0394 LDR r0,|L1.1984|
000428 e5900000 LDR r0,[r0,#0] ; rx_point
00042c e2800001 ADD r0,r0,#1
000430 e59f1388 LDR r1,|L1.1984|
000434 e5810000 STR r0,[r1,#0] ; rx_point
;;;134 if(rx_point<5)
000438 e59f0380 LDR r0,|L1.1984|
00043c e5900000 LDR r0,[r0,#0] ; rx_point
000440 e3500005 CMP r0,#5
000444 2a00000c BCS |L1.1148|
;;;135 rx_filesize |= (RdURXH1()<<(8*(rx_point-1))); // First 4-bytes mean file size
000448 e51f02f4 LDR r0,|L1.348|
00044c e5d00024 LDRB r0,[r0,#0x24]
000450 e59f1368 LDR r1,|L1.1984|
000454 e5911000 LDR r1,[r1,#0] ; rx_point
000458 e3e02007 MVN r2,#7
00045c e0821181 ADD r1,r2,r1,LSL #3
000460 e1a00110 MOV r0,r0,LSL r1
000464 e59f1358 LDR r1,|L1.1988|
000468 e5911000 LDR r1,[r1,#0] ; rx_filesize
00046c e1800001 ORR r0,r0,r1
000470 e59f134c LDR r1,|L1.1988|
000474 e5810000 STR r0,[r1,#0] ; rx_filesize
000478 ea000026 B |L1.1304|
;;;136 else if(rx_point>(rx_filesize-2))
|L1.1148|
00047c e59f033c LDR r0,|L1.1984|
000480 e5900000 LDR r0,[r0,#0] ; rx_point
000484 e59f1338 LDR r1,|L1.1988|
000488 e5911000 LDR r1,[r1,#0] ; rx_filesize
00048c e2411002 SUB r1,r1,#2
000490 e1500001 CMP r0,r1
000494 9a000018 BLS |L1.1276|
;;;137 {
;;;138 rx_dncs |= (RdURXH1()<<(8*(1-(rx_filesize-rx_point)))); //Last 2-bytes mean checksum.
000498 e51f0344 LDR r0,|L1.348|
00049c e5d00024 LDRB r0,[r0,#0x24]
0004a0 e59f131c LDR r1,|L1.1988|
0004a4 e5911000 LDR r1,[r1,#0] ; rx_filesize
0004a8 e59f2310 LDR r2,|L1.1984|
0004ac e5922000 LDR r2,[r2,#0] ; rx_point
0004b0 e0411002 SUB r1,r1,r2
0004b4 e2611001 RSB r1,r1,#1
0004b8 e1a01181 MOV r1,r1,LSL #3
0004bc e1a00110 MOV r0,r0,LSL r1
0004c0 e59f1300 LDR r1,|L1.1992|
0004c4 e1d110b0 LDRH r1,[r1,#0] ; rx_dncs
0004c8 e1800001 ORR r0,r0,r1
0004cc e59f12f4 LDR r1,|L1.1992|
0004d0 e1c100b0 STRH r0,[r1,#0] ; rx_dncs
;;;139 if(rx_point==rx_filesize) rx_isdone=0;
0004d4 e59f02e4 LDR r0,|L1.1984|
0004d8 e5900000 LDR r0,[r0,#0] ; rx_point
0004dc e59f12e0 LDR r1,|L1.1988|
0004e0 e5911000 LDR r1,[r1,#0] ; rx_filesize
0004e4 e1500001 CMP r0,r1
0004e8 1a00000a BNE |L1.1304|
0004ec e3a00000 MOV r0,#0
0004f0 e59f12d4 LDR r1,|L1.1996|
0004f4 e5810000 STR r0,[r1,#0] ; rx_isdone
0004f8 ea000006 B |L1.1304|
;;;140 }
;;;141 else
;;;142 rx_checksum+=RdURXH1();
|L1.1276|
0004fc e51f03a8 LDR r0,|L1.348|
000500 e5d00024 LDRB r0,[r0,#0x24]
000504 e59f12c4 LDR r1,|L1.2000|
000508 e5911000 LDR r1,[r1,#0] ; rx_checksum
00050c e0800001 ADD r0,r0,r1
000510 e59f12b8 LDR r1,|L1.2000|
000514 e5810000 STR r0,[r1,#0] ; rx_checksum
;;;143 }
|L1.1304|
000518 eaffffbd B |L1.1044|
;;;144 }
|L1.1308|
00051c e1a0f00e MOV pc,lr
ENDP
Uart1_RxFifoOrErr PROC
;;;104 void __irq Uart1_RxFifoOrErr(void)
;;;105 {
000520 e92d500f STMFD sp!,{r0-r3,r12,lr}
;;;106 rINTSUBMSK|=(BIT_SUB_RXD1|BIT_SUB_TXD1|BIT_SUB_ERR1);
000524 e3a0044a MOV r0,#0x4a000000
000528 e590001c LDR r0,[r0,#0x1c]
00052c e3800038 ORR r0,r0,#0x38
000530 e3a0144a MOV r1,#0x4a000000
000534 e581001c STR r0,[r1,#0x1c]
;;;107 if(rSUBSRCPND&BIT_SUB_RXD1) __sub_Uart1_RxFifo();
000538 e3a0044a MOV r0,#0x4a000000
00053c e5900018 LDR r0,[r0,#0x18]
000540 e3100008 TST r0,#8
000544 0a000001 BEQ |L1.1360|
000548 ebfffffe BL __sub_Uart1_RxFifo
00054c ea000000 B |L1.1364|
;;;108 else __sub_Uart1_RxErrInt();
|L1.1360|
000550 ebfffffe BL __sub_Uart1_RxErrInt
;;;109 ClearPending(BIT_UART1);
|L1.1364|
000554 e3a00880 MOV r0,#0x800000
000558 e3a0144a MOV r1,#0x4a000000
00055c e5810000 STR r0,[r1,#0]
000560 e3a00880 MOV r0,#0x800000
000564 e3a0144a MOV r1,#0x4a000000
000568 e5810010 STR r0,[r1,#0x10]
00056c e3a0044a MOV r0,#0x4a000000
000570 e5900010 LDR r0,[r0,#0x10]
;;;110 rSUBSRCPND=(BIT_SUB_RXD1|BIT_SUB_ERR1);
000574 e3a00028 MOV r0,#0x28
000578 e3a0144a MOV r1,#0x4a000000
00057c e5810018 STR r0,[r1,#0x18]
;;;111 rINTSUBMSK&=~(BIT_SUB_RXD1|BIT_SUB_ERR1);
000580 e3a0044a MOV r0,#0x4a000000
000584 e590001c LDR r0,[r0,#0x1c]
000588 e3c00028 BIC r0,r0,#0x28
00058c e3a0144a MOV r1,#0x4a000000
000590 e581001c STR r0,[r1,#0x1c]
;;;112 }
000594 e8bd500f LDMFD sp!,{r0-r3,r12,lr}
000598 e25ef004 SUBS pc,lr,#4
ENDP
Test_Uart1_Int PROC
;;;170 void Test_Uart1_Int(void)
;;;171 {
00059c e92d4038 STMFD sp!,{r3-r5,lr}
;;;172 U8 ch;
;;;173 int iBaud;
;;;174
;;;175 Uart_Port_Set();
0005a0 ebfffffe BL Uart_Port_Set
;;;176 Uart_Select(1);
0005a4 e3a00001 MOV r0,#1
0005a8 ebfffffe BL Uart_Select
;;;177
;;;178 /******** For operating clock test *********/
;;;179 Uart_Printf("[Uart channel 0 Interrupt test]\n");
0005ac e28f0f88 ADR r0,|L1.2004|
0005b0 ebfffffe BL Uart_Printf
;;;180 Uart_Printf("Select operating clock 1. PCLK(D) 2. UCLK 3. FCLK/n \n");
0005b4 e28f0f8f ADR r0,|L1.2040|
0005b8 ebfffffe BL Uart_Printf
;;;181 ch = Uart_Getch();
0005bc ebfffffe BL Uart_Getch
0005c0 e1a05000 MOV r5,r0
;;;182 switch (ch)
0005c4 e3550032 CMP r5,#0x32
0005c8 0a000002 BEQ |L1.1496|
0005cc e3550033 CMP r5,#0x33
0005d0 1a00001a BNE |L1.1600|
0005d4 ea00000b B |L1.1544|
;;;183 {
;;;184 case '2' :
;;;185 rMISCCR = rMISCCR & ~(7<<8) | (1<<10); // CLKOUT1 = PCLK
|L1.1496|
0005d8 e3a00456 MOV r0,#0x56000000
0005dc e5900080 LDR r0,[r0,#0x80]
0005e0 e3c00e70 BIC r0,r0,#0x700
0005e4 e3800e40 ORR r0,r0,#0x400
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -