📄 uart2.txt
字号:
0002c0 e5900008 LDR r0,[r0,#8]
0002c4 e3800940 ORR r0,r0,#0x100000
0002c8 e3a0144a MOV r1,#0x4a000000
0002cc e5810008 STR r0,[r1,#8]
;;;75 ClearPending(BIT_DMA3);
0002d0 e3a00940 MOV r0,#0x100000
0002d4 e3a0144a MOV r1,#0x4a000000
0002d8 e5810000 STR r0,[r1,#0]
0002dc e3a00940 MOV r0,#0x100000
0002e0 e3a0144a MOV r1,#0x4a000000
0002e4 e5810010 STR r0,[r1,#0x10]
0002e8 e3a0044a MOV r0,#0x4a000000
0002ec e5900010 LDR r0,[r0,#0x10]
;;;76 }
0002f0 e8bd0003 LDMFD sp!,{r0,r1}
0002f4 e25ef004 SUBS pc,lr,#4
ENDP
Uart2_RxDmaDone PROC
;;;78 void __irq Uart2_RxDmaDone(void)
;;;79 {
0002f8 e92d0003 STMFD sp!,{r0,r1}
;;;80 rDMASKTRIG3=0x0; //DMA3 Channel Off
0002fc e3a00000 MOV r0,#0
000300 e3a0144b MOV r1,#0x4b000000
000304 e58100e0 STR r0,[r1,#0xe0]
;;;81 isDone=0;
000308 e3a00000 MOV r0,#0
00030c e59f10cc LDR r1,|L1.992|
000310 e5810000 STR r0,[r1,#0] ; isDone
;;;82 *(uart2RxStr+5)='\0';
000314 e3a00000 MOV r0,#0
000318 e51f1100 LDR r1,|L1.544|
00031c e5911000 LDR r1,[r1,#0] ; uart2RxStr
000320 e5c10005 STRB r0,[r1,#5]
;;;83 rINTMSK|=(BIT_DMA3);
000324 e3a0044a MOV r0,#0x4a000000
000328 e5900008 LDR r0,[r0,#8]
00032c e3800940 ORR r0,r0,#0x100000
000330 e3a0144a MOV r1,#0x4a000000
000334 e5810008 STR r0,[r1,#8]
;;;84 ClearPending(BIT_DMA3);
000338 e3a00940 MOV r0,#0x100000
00033c e3a0144a MOV r1,#0x4a000000
000340 e5810000 STR r0,[r1,#0]
000344 e3a00940 MOV r0,#0x100000
000348 e3a0144a MOV r1,#0x4a000000
00034c e5810010 STR r0,[r1,#0x10]
000350 e3a0044a MOV r0,#0x4a000000
000354 e5900010 LDR r0,[r0,#0x10]
;;;85 }
000358 e8bd0003 LDMFD sp!,{r0,r1}
00035c e25ef004 SUBS pc,lr,#4
ENDP
Uart2_RxDmaOrErr PROC
;;;87 void __irq Uart2_RxDmaOrErr(void)
;;;88 {
000360 e92d500f STMFD sp!,{r0-r3,r12,lr}
;;;89 rINTSUBMSK|=(BIT_SUB_RXD2|BIT_SUB_TXD2|BIT_SUB_ERR2);
000364 e3a0044a MOV r0,#0x4a000000
000368 e590001c LDR r0,[r0,#0x1c]
00036c e3800f70 ORR r0,r0,#0x1c0
000370 e3a0144a MOV r1,#0x4a000000
000374 e581001c STR r0,[r1,#0x1c]
;;;90 if(rSUBSRCPND&BIT_SUB_RXD2) Uart_Printf("Error : UART2 Rx Interrupt is occured!!!\n");
000378 e3a0044a MOV r0,#0x4a000000
00037c e5900018 LDR r0,[r0,#0x18]
000380 e3100040 TST r0,#0x40
000384 0a000002 BEQ |L1.916|
000388 e28f0054 ADR r0,|L1.996|
00038c ebfffffe BL Uart_Printf
000390 ea000000 B |L1.920|
;;;91 else __sub_Uart2_RxErrInt();
|L1.916|
000394 ebfffffe BL __sub_Uart2_RxErrInt
;;;92
;;;93 ClearPending(BIT_UART2);
|L1.920|
000398 e3a00c80 MOV r0,#0x8000
00039c e3a0144a MOV r1,#0x4a000000
0003a0 e5810000 STR r0,[r1,#0]
0003a4 e3a00c80 MOV r0,#0x8000
0003a8 e3a0144a MOV r1,#0x4a000000
0003ac e5810010 STR r0,[r1,#0x10]
0003b0 e3a0044a MOV r0,#0x4a000000
0003b4 e5900010 LDR r0,[r0,#0x10]
;;;94 rSUBSRCPND=(BIT_SUB_ERR2); // Clear Sub int pending
0003b8 e3a00f40 MOV r0,#0x100
0003bc e3a0144a MOV r1,#0x4a000000
0003c0 e5810018 STR r0,[r1,#0x18]
;;;95 rINTSUBMSK&=~(BIT_SUB_ERR2);
0003c4 e3a0044a MOV r0,#0x4a000000
0003c8 e590001c LDR r0,[r0,#0x1c]
0003cc e3c00f40 BIC r0,r0,#0x100
0003d0 e3a0144a MOV r1,#0x4a000000
0003d4 e581001c STR r0,[r1,#0x1c]
;;;96 }
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 78522032 DCB "2 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
Uart2_TxFifo PROC
;;;98 void __irq Uart2_TxFifo(void)
;;;99 {
000410 e92d0007 STMFD sp!,{r0-r2}
;;;100 rINTSUBMSK|=(BIT_SUB_RXD2|BIT_SUB_TXD2|BIT_SUB_ERR2); // Just for the safety
000414 e3a0044a MOV r0,#0x4a000000
000418 e590001c LDR r0,[r0,#0x1c]
00041c e3800f70 ORR r0,r0,#0x1c0
000420 e3a0144a MOV r1,#0x4a000000
000424 e581001c STR r0,[r1,#0x1c]
;;;101 while (!(rUFSTAT2 & 0x4000) && (*uart2TxStr != '\0')) //until tx fifo full or end of string
000428 e1a00000 NOP
|L1.1068|
00042c e51f02d8 LDR r0,|L1.348|
000430 e5900018 LDR r0,[r0,#0x18]
000434 e3100c40 TST r0,#0x4000
000438 1a00000d BNE |L1.1140|
00043c e51f02ec LDR r0,|L1.344|
000440 e5900000 LDR r0,[r0,#0] ; uart2TxStr
000444 e5d00000 LDRB r0,[r0,#0]
000448 e3500000 CMP r0,#0
00044c 0a000008 BEQ |L1.1140|
;;;102 WrUTXH2(*uart2TxStr++);
000450 e51f0300 LDR r0,|L1.344|
000454 e5901000 LDR r1,[r0,#0] ; uart2TxStr
000458 e5d10000 LDRB r0,[r1,#0]
00045c e2811001 ADD r1,r1,#1
000460 e51f2310 LDR r2,|L1.344|
000464 e5821000 STR r1,[r2,#0] ; uart2TxStr
000468 e51f1314 LDR r1,|L1.348|
00046c e5c10020 STRB r0,[r1,#0x20]
000470 eaffffed B |L1.1068|
;;;103
;;;104 if(*uart2TxStr == '\0')
|L1.1140|
000474 e51f0324 LDR r0,|L1.344|
000478 e5900000 LDR r0,[r0,#0] ; uart2TxStr
00047c e5d00000 LDRB r0,[r0,#0]
000480 e3500000 CMP r0,#0
000484 1a000010 BNE |L1.1228|
;;;105 {
;;;106 rINTMSK|=BIT_UART2;
000488 e3a0044a MOV r0,#0x4a000000
00048c e5900008 LDR r0,[r0,#8]
000490 e3800c80 ORR r0,r0,#0x8000
000494 e3a0144a MOV r1,#0x4a000000
000498 e5810008 STR r0,[r1,#8]
;;;107 rSUBSRCPND=BIT_SUB_TXD2; // Clear Sub int pending
00049c e3a00080 MOV r0,#0x80
0004a0 e3a0144a MOV r1,#0x4a000000
0004a4 e5810018 STR r0,[r1,#0x18]
;;;108 ClearPending(BIT_UART2); // Clear master pending
0004a8 e3a00c80 MOV r0,#0x8000
0004ac e3a0144a MOV r1,#0x4a000000
0004b0 e5810000 STR r0,[r1,#0]
0004b4 e3a00c80 MOV r0,#0x8000
0004b8 e3a0144a MOV r1,#0x4a000000
0004bc e5810010 STR r0,[r1,#0x10]
0004c0 e3a0044a MOV r0,#0x4a000000
0004c4 e5900010 LDR r0,[r0,#0x10]
0004c8 ea00000f B |L1.1292|
;;;109 }
;;;110 else
;;;111 {
;;;112 ClearPending(BIT_UART2); // Clear master pending
|L1.1228|
0004cc e3a00c80 MOV r0,#0x8000
0004d0 e3a0144a MOV r1,#0x4a000000
0004d4 e5810000 STR r0,[r1,#0]
0004d8 e3a00c80 MOV r0,#0x8000
0004dc e3a0144a MOV r1,#0x4a000000
0004e0 e5810010 STR r0,[r1,#0x10]
0004e4 e3a0044a MOV r0,#0x4a000000
0004e8 e5900010 LDR r0,[r0,#0x10]
;;;113 rSUBSRCPND=BIT_SUB_TXD2; // Clear Sub int pending
0004ec e3a00080 MOV r0,#0x80
0004f0 e3a0144a MOV r1,#0x4a000000
0004f4 e5810018 STR r0,[r1,#0x18]
;;;114 rINTSUBMSK&=~(BIT_SUB_TXD2); // Unmask sub int
0004f8 e3a0044a MOV r0,#0x4a000000
0004fc e590001c LDR r0,[r0,#0x1c]
000500 e3c00080 BIC r0,r0,#0x80
000504 e3a0144a MOV r1,#0x4a000000
000508 e581001c STR r0,[r1,#0x1c]
;;;115 }
;;;116 }
|L1.1292|
00050c e8bd0007 LDMFD sp!,{r0-r2}
000510 e25ef004 SUBS pc,lr,#4
ENDP
__sub_Uart2_RxFifo PROC
;;;143 void __sub_Uart2_RxFifo(void)
;;;144 {
000514 e1a00000 NOP
;;;145 while(rUFSTAT2&0x7f) //During the Rx FIFO is not empty
|L1.1304|
000518 e51f03c4 LDR r0,|L1.348|
00051c e5900018 LDR r0,[r0,#0x18]
000520 e310007f TST r0,#0x7f
000524 0a00003d BEQ |L1.1568|
;;;146 {
;;;147 rx_point++;
000528 e59f03d4 LDR r0,|L1.2308|
00052c e5900000 LDR r0,[r0,#0] ; rx_point
000530 e2800001 ADD r0,r0,#1
000534 e59f13c8 LDR r1,|L1.2308|
000538 e5810000 STR r0,[r1,#0] ; rx_point
;;;148 if(rx_point<5)
00053c e59f03c0 LDR r0,|L1.2308|
000540 e5900000 LDR r0,[r0,#0] ; rx_point
000544 e3500005 CMP r0,#5
000548 2a00000c BCS |L1.1408|
;;;149 rx_filesize |= (RdURXH2()<<(8*(rx_point-1))); // First 4-bytes mean file size
00054c e51f03f8 LDR r0,|L1.348|
000550 e5d00024 LDRB r0,[r0,#0x24]
000554 e59f13a8 LDR r1,|L1.2308|
000558 e5911000 LDR r1,[r1,#0] ; rx_point
00055c e3e02007 MVN r2,#7
000560 e0821181 ADD r1,r2,r1,LSL #3
000564 e1a00110 MOV r0,r0,LSL r1
000568 e59f1398 LDR r1,|L1.2312|
00056c e5911000 LDR r1,[r1,#0] ; rx_filesize
000570 e1800001 ORR r0,r0,r1
000574 e59f138c LDR r1,|L1.2312|
000578 e5810000 STR r0,[r1,#0] ; rx_filesize
00057c ea000026 B |L1.1564|
;;;150 else if(rx_point>(rx_filesize-2))
|L1.1408|
000580 e59f037c LDR r0,|L1.2308|
000584 e5900000 LDR r0,[r0,#0] ; rx_point
000588 e59f1378 LDR r1,|L1.2312|
00058c e5911000 LDR r1,[r1,#0] ; rx_filesize
000590 e2411002 SUB r1,r1,#2
000594 e1500001 CMP r0,r1
000598 9a000018 BLS |L1.1536|
;;;151 {
;;;152 rx_dncs |= (RdURXH2()<<(8*(1-(rx_filesize-rx_point)))); //Last 2-bytes mean checksum.
00059c e51f0448 LDR r0,|L1.348|
0005a0 e5d00024 LDRB r0,[r0,#0x24]
0005a4 e59f135c LDR r1,|L1.2312|
0005a8 e5911000 LDR r1,[r1,#0] ; rx_filesize
0005ac e59f2350 LDR r2,|L1.2308|
0005b0 e5922000 LDR r2,[r2,#0] ; rx_point
0005b4 e0411002 SUB r1,r1,r2
0005b8 e2611001 RSB r1,r1,#1
0005bc e1a01181 MOV r1,r1,LSL #3
0005c0 e1a00110 MOV r0,r0,LSL r1
0005c4 e59f1340 LDR r1,|L1.2316|
0005c8 e1d110b0 LDRH r1,[r1,#0] ; rx_dncs
0005cc e1800001 ORR r0,r0,r1
0005d0 e59f1334 LDR r1,|L1.2316|
0005d4 e1c100b0 STRH r0,[r1,#0] ; rx_dncs
;;;153 if(rx_point==rx_filesize) rx_isdone=0;
0005d8 e59f0324 LDR r0,|L1.2308|
0005dc e5900000 LDR r0,[r0,#0] ; rx_point
0005e0 e59f1320 LDR r1,|L1.2312|
0005e4 e5911000 LDR r1,[r1,#0] ; rx_filesize
0005e8 e1500001 CMP r0,r1
0005ec 1a00000a BNE |L1.1564|
0005f0 e3a00000 MOV r0,#0
0005f4 e59f1314 LDR r1,|L1.2320|
0005f8 e5810000 STR r0,[r1,#0] ; rx_isdone
0005fc ea000006 B |L1.1564|
;;;154 }
;;;155 else
;;;156 rx_checksum+=RdURXH2();
|L1.1536|
000600 e51f04ac LDR r0,|L1.348|
000604 e5d00024 LDRB r0,[r0,#0x24]
000608 e59f1304 LDR r1,|L1.2324|
00060c e5911000 LDR r1,[r1,#0] ; rx_checksum
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -