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

📄 uart1.txt

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