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

📄 uart2.txt

📁 SMDK2442所有设备的驱动测试程序。运行monitor程序
💻 TXT
📖 第 1 页 / 共 5 页
字号:
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 + -