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

📄 uart1.txt

📁 s3c24a0固件测试代码 ? ? ? ? ?啊 
💻 TXT
📖 第 1 页 / 共 5 页
字号:
0005b0  e3a00000          MOV      r0,#0
0005b4  e51f1458          LDR      r1,|L1.356|
0005b8  e5911000          LDR      r1,[r1,#0]  ; uart1RxStr
0005bc  e5c10005          STRB     r0,[r1,#5]
;;;195    	// edited by junon
;;;196    	rINTSUBMSK|=(BIT_SUB_DMA1);
0005c0  e51f0478          LDR      r0,|L1.336|
0005c4  e590001c          LDR      r0,[r0,#0x1c]
0005c8  e3800640          ORR      r0,r0,#0x4000000
0005cc  e51f1484          LDR      r1,|L1.336|
0005d0  e581001c          STR      r0,[r1,#0x1c]
;;;197    	rSUBSRCPND=(BIT_SUB_DMA1);				
0005d4  e3a00640          MOV      r0,#0x4000000
0005d8  e1c11000          BIC      r1,r1,r0
0005dc  e5810018          STR      r0,[r1,#0x18]
;;;198    	rINTMSK|=(BIT_DMA);
0005e0  e1c10000          BIC      r0,r1,r0
0005e4  e5900008          LDR      r0,[r0,#8]
0005e8  e3800940          ORR      r0,r0,#0x100000
0005ec  e5810008          STR      r0,[r1,#8]
;;;199    	ClearPending(BIT_DMA);
0005f0  e3a00940          MOV      r0,#0x100000
0005f4  e1c11000          BIC      r1,r1,r0
0005f8  e5810000          STR      r0,[r1,#0]
0005fc  e1c10000          BIC      r0,r1,r0
000600  e5900010          LDR      r0,[r0,#0x10]
000604  e5810010          STR      r0,[r1,#0x10]
000608  e1a00001          MOV      r0,r1
00060c  e5900010          LDR      r0,[r0,#0x10]
;;;200    	// end junon
;;;201    }
000610  e8bd0003          LDMFD    sp!,{r0,r1}
000614  e25ef004          SUBS     pc,lr,#4
                          ENDP

                  Uart1_RxDmaOrErr PROC
;;;203    void __irq Uart1_RxDmaOrErr(void)
;;;204    {
000618  e92d500f          STMFD    sp!,{r0-r3,r12,lr}
;;;205        rINTSUBMSK|=(BIT_SUB_RXD1|BIT_SUB_TXD1|BIT_SUB_ERR1);
00061c  e51f04d4          LDR      r0,|L1.336|
000620  e590001c          LDR      r0,[r0,#0x1c]
000624  e3800038          ORR      r0,r0,#0x38
000628  e51f14e0          LDR      r1,|L1.336|
00062c  e581001c          STR      r0,[r1,#0x1c]
;;;206        if(rSUBSRCPND&BIT_SUB_RXD1) Uart_Printf("Error : UART1 Rx Interrupt is occured!!!\n");
000630  e1a00001          MOV      r0,r1
000634  e5900018          LDR      r0,[r0,#0x18]
000638  e3100008          TST      r0,#8
00063c  0a000002          BEQ      |L1.1612|
000640  e28f0054          ADR      r0,|L1.1692|
000644  ebfffffe          BL       _printf
000648  ea000000          B        |L1.1616|
;;;207        else __sub_Uart1_RxErrInt();
                  |L1.1612|
00064c  ebfffffe          BL       __sub_Uart1_RxErrInt
;;;208    
;;;209        ClearPending(BIT_UART1);
                  |L1.1616|
000650  e3a00880          MOV      r0,#0x800000
000654  e51f150c          LDR      r1,|L1.336|
000658  e5810000          STR      r0,[r1,#0]
00065c  e1c10000          BIC      r0,r1,r0
000660  e5900010          LDR      r0,[r0,#0x10]
000664  e5810010          STR      r0,[r1,#0x10]
000668  e1a00001          MOV      r0,r1
00066c  e5900010          LDR      r0,[r0,#0x10]
;;;210        rSUBSRCPND=(BIT_SUB_ERR1);	// Clear Sub int pending    
000670  e3a00020          MOV      r0,#0x20
000674  e1c11000          BIC      r1,r1,r0
000678  e5810018          STR      r0,[r1,#0x18]
;;;211        rINTSUBMSK&=~(BIT_SUB_ERR1);    
00067c  e1c10000          BIC      r0,r1,r0
000680  e590001c          LDR      r0,[r0,#0x1c]
000684  e3c00020          BIC      r0,r0,#0x20
000688  e581001c          STR      r0,[r1,#0x1c]
;;;212    }
00068c  e8bd500f          LDMFD    sp!,{r0-r3,r12,lr}
000690  e25ef004          SUBS     pc,lr,#4
                  |L1.1684|
000694  40500000          DCD      0x40500000
                  |L1.1688|
000698  00000000          DCD      isDone
                  |L1.1692|
00069c  6f727245          DCB      "Erro"
0006a0  203a2072          DCB      "r : "
0006a4  54524155          DCB      "UART"
0006a8  78522031          DCB      "1 Rx"
0006ac  746e4920          DCB      " Int"
0006b0  75727265          DCB      "erru"
0006b4  69207470          DCB      "pt i"
0006b8  636f2073          DCB      "s oc"
0006bc  65727563          DCB      "cure"
0006c0  21212164          DCB      "d!!!"
0006c4  0000000a          DCB      "\n\0\0\0"
                          ENDP

                  Test_Uart1_Dma PROC
;;;215    void Test_Uart1_Dma(void)
;;;216    {
0006c8  e92d4008          STMFD    sp!,{r3,lr}
;;;217        Uart_Port_Set(); 
0006cc  ebfffffe          BL       Uart_Port_Set
;;;218        Uart_Select(0);    
0006d0  e3a00000          MOV      r0,#0
0006d4  ebfffffe          BL       Uart_Select
;;;219        /*********** UART1 Tx test with DMA1 ***********/ 
;;;220        isDone=1;
0006d8  e3a00001          MOV      r0,#1
0006dc  e51f104c          LDR      r1,|L1.1688|
0006e0  e5810000          STR      r0,[r1,#0]  ; isDone
;;;221        uart1TxStr="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890->UART1 Tx Test by DMA1 is good!!!!\r\n";
0006e4  e59f0234          LDR      r0,|L1.2336|
0006e8  e51f159c          LDR      r1,|L1.340|
0006ec  e5810000          STR      r0,[r1,#0]  ; uart1TxStr
;;;222        Uart_Printf("\n[Uart channel 1 DMA1 Tx Test]\n");
0006f0  e28f0f8b          ADR      r0,|L1.2340|
0006f4  ebfffffe          BL       _printf
;;;223        Uart_TxEmpty(0);
0006f8  e3a00000          MOV      r0,#0
0006fc  ebfffffe          BL       Uart_TxEmpty
;;;224        
;;;225        //-------------------------------------------------------------------------------------------->
;;;226        Uart_Printf("\nConnect PC[COM1 or COM2] and UART1 of SMDK24A0 with a serial cable!!! \n");
000700  e51f026c          LDR      r0,|L1.1180|
000704  ebfffffe          BL       _printf
;;;227        Uart_Printf("Then, press any key........\n");
000708  e24f0f9c          ADR      r0,|L1.1184|
00070c  ebfffffe          BL       _printf
;;;228        Uart_Select(1);	// Change the uart port    
000710  e3a00001          MOV      r0,#1
000714  ebfffffe          BL       Uart_Select
;;;229        Uart_Getch();
000718  ebfffffe          BL       Uart_Getch
;;;230        //----------------------------------------->
;;;231        
;;;232        
;;;233        pISR_DMA=(unsigned)Uart1_TxDmaDone;
00071c  e59f0220          LDR      r0,|L1.2372|
000720  e51f1264          LDR      r1,|L1.1220|
000724  e5810f70          STR      r0,[r1,#0xf70]
;;;234    
;;;235        rULCON1=(0<<6)|(0<<3)|(0<<2)|(3);	// Normal,No parity,One stop bit, 8bit
000728  e3a00003          MOV      r0,#3
00072c  e51f15dc          LDR      r1,|L1.344|
000730  e5810000          STR      r0,[r1,#0]
;;;236        rUCON1 &= 0x400;	// For the PCLK <-> UCLK fuction    
000734  e1c10000          BIC      r0,r1,r0
000738  e5900004          LDR      r0,[r0,#4]
00073c  e2000e40          AND      r0,r0,#0x400
000740  e5810004          STR      r0,[r1,#4]
;;;237        rUCON1 |= (TX_INTTYPE<<9)|(RX_INTTYPE<<8)|(0<<7)|(0<<6)|(0<<5)|(0<<4)|(3<<2)|(1);
000744  e1a00001          MOV      r0,r1
000748  e5900004          LDR      r0,[r0,#4]
00074c  e380000d          ORR      r0,r0,#0xd
000750  e5810004          STR      r0,[r1,#4]
;;;238        //Clock,Tx:Def,Rx:Def,Rx timeout:x,Rx error int:x,Loop-back:x,Send break:x,Tx:dma1,Rx:int
;;;239    
;;;240        /***DMA1 init***/
;;;241        rDISRC1=(U32)uart1TxStr;	// Start address
000754  e51f0608          LDR      r0,|L1.340|
000758  e5900000          LDR      r0,[r0,#0]  ; uart1TxStr
00075c  e51f10d0          LDR      r1,|L1.1684|
000760  e5810000          STR      r0,[r1,#0]
;;;242        rDISRCC1=(0<<1)|(0);		// AHB,Increment
000764  e3a00000          MOV      r0,#0
000768  e1c11000          BIC      r1,r1,r0
00076c  e5810004          STR      r0,[r1,#4]
;;;243        rDIDST1=(U32)UTXH1;			// Memory buffer Address
000770  e59f01d0          LDR      r0,|L1.2376|
000774  e1c110c0          BIC      r1,r1,r0,ASR #1
000778  e5810008          STR      r0,[r1,#8]
;;;244        rDIDSTC1=(1<<1)|(1);		// APB,Fixed
00077c  e3a00003          MOV      r0,#3
000780  e1c11000          BIC      r1,r1,r0
000784  e581000c          STR      r0,[r1,#0xc]
;;;245        rDCON1=(1<<31)|(0<<30)|(1<<29)|(0<<28)|(0<<27)|(1<<24)|(1<<23)|(1<<22)|(0<<20)|strlen((char*)uart1TxStr);
000788  e51f063c          LDR      r0,|L1.340|
00078c  e5900000          LDR      r0,[r0,#0]  ; uart1TxStr
000790  ebfffffe          BL       strlen
000794  e3800480          ORR      r0,r0,#0x80000000
000798  e3800587          ORR      r0,r0,#0x21c00000
00079c  e51f1110          LDR      r1,|L1.1684|
0007a0  e5810010          STR      r0,[r1,#0x10]
;;;246        //handshake, sync PCLK, TC int, single tx, single service, Uart1, H/W request,auto-reload off, Byte size Tx, Tx count value
;;;247        rINTMSK=~(BIT_DMA);
0007a4  e3e00940          MVN      r0,#0x100000
0007a8  e24119c0          SUB      r1,r1,#0x300000
0007ac  e5810008          STR      r0,[r1,#8]
;;;248        rINTSUBMSK=~(BIT_SUB_DMA1); // added by junon
0007b0  e3e00640          MVN      r0,#0x4000000
0007b4  e0011000          AND      r1,r1,r0
0007b8  e581001c          STR      r0,[r1,#0x1c]
;;;249        rDMASKTRIG1=(0<<2)|(1<<1)|(0);    //no-stop, DMA1 channel on, no-SW trigger 
0007bc  e3a00002          MOV      r0,#2
0007c0  e28119c0          ADD      r1,r1,#0x300000
0007c4  e5810020          STR      r0,[r1,#0x20]
;;;250    
;;;251        while(isDone);
0007c8  e1a00000          NOP      
                  |L1.1996|
0007cc  e51f013c          LDR      r0,|L1.1688|
0007d0  e5900000          LDR      r0,[r0,#0]  ; isDone
0007d4  e3500000          CMP      r0,#0
0007d8  1afffffb          BNE      |L1.1996|
;;;252    
;;;253        /*********** UART1 Rx test with DMA1 ***********/ 
;;;254        isDone=1;
0007dc  e3a00001          MOV      r0,#1
0007e0  e51f1150          LDR      r1,|L1.1688|
0007e4  e5810000          STR      r0,[r1,#0]  ; isDone
;;;255        uart1RxStr=(char *)UARTBUFFER;
0007e8  e3a00544          MOV      r0,#0x11000000
0007ec  e51f1690          LDR      r1,|L1.356|
0007f0  e5810000          STR      r0,[r1,#0]  ; uart1RxStr
;;;256        Uart_Printf("\n[Uart channel 1 DMA1 Rx Test]\n");
0007f4  e28f0f54          ADR      r0,|L1.2380|
0007f8  ebfffffe          BL       _printf
;;;257        Uart_Printf("Type any five keys!!!\n");    
0007fc  e28f0f5a          ADR      r0,|L1.2412|
000800  ebfffffe          BL       _printf
;;;258        Uart_Printf("Then you will see what you typed.\n");
000804  e28f0f5e          ADR      r0,|L1.2436|
000808  ebfffffe          BL       _printf
;;;259    
;;;260        pISR_DMA=(unsigned)Uart1_RxDmaDone;
00080c  e59f0194          LDR      r0,|L1.2472|
000810  e51f1354          LDR      r1,|L1.1220|
000814  e5810f70          STR      r0,[r1,#0xf70]
;;;261        pISR_UART1=(unsigned)Uart1_RxDmaOrErr;
000818  e59f018c          LDR      r0,|L1.2476|
00081c  e5810f7c          STR      r0,[r1,#0xf7c]
;;;262        
;;;263        rULCON1=(0<<6)|(0<<3)|(0<<2)|(3);	// Normal,No parity,One stop bit, 8bit
000820  e3a00003          MOV      r0,#3
000824  e51f16d4          LDR      r1,|L1.344|
000828  e5810000          STR      r0,[r1,#0]
;;;264        rUCON1 &= 0x400;	// For the PCLK <-> UCLK fuction    
00082c  e1c10000          BIC      r0,r1,r0
000830  e5900004          LDR      r0,[r0,#4]
000834  e2000e40          AND      r0,r0,#0x400
000838  e5810004          STR      r0,[r1,#4]
;;;265        rUCON1 |= (TX_INTTYPE<<9)|(RX_INTTYPE<<8)|(0<<7)|(1<<6)|(0<<5)|(0<<4)|(1<<2)|(3);
00083c  e1a00001          MOV      r0,r1
000840  e5900004          LDR      r0,[r0,#4]
000844  e3800047          ORR      r0,r0,#0x47
000848  e5810004          STR      r0,[r1,#4]
;;;266        //Clock,Tx:Def,Rx:Def,Rx timeout:x,Rx error int:o,Loop-back:x,Send break:x,Tx:int,Rx:dma1
;;;267    
;;;268        /***DMA1 init***/
;;;269        rDISRC1=(U32)URXH1;			// Start address
00084c  e2810024          ADD      r0,r1,#0x24
000850  e51f11c4          LDR      r1,|L1.1684|
000854  e5810000          STR      r0,[r1,#0]
;;;270        rDISRCC1=(1<<1)|(1);		// APB,Fixed
000858  e3a00003          MOV      r0,#3
00085c  e1c11000          BIC      r1,r1,r0
000860  e5810004          STR      r0,[r1,#4]
;;;271        rDIDST1=(U32)uart1RxStr;	// Memory buffer Address
000864  e51f0708          LDR      r0,|L1.356|
000868  e5900000          LDR      r0,[r0,#0]  ; uart1RxStr
00086c  e5810008          STR      r0,[r1,#8]
;;;272        rDIDSTC1= (0<<1)|(0);		// AHB,Increment
000870  e3a00000          MOV      r0,#0
000874  e1c11000          BIC      r1,r1,r0
000878  e581000c          STR      r0,[r1,#0xc]
;;;273        rDCON1=(1<<31)|(0<<30)|(1<<29)|(0<<28)|(0<<27)|(1<<24)|(1<<23)|(1<<22)|(0<<20)|(5);
00087c  e59f012c          LDR      r0,|L1.2480|
000880  e0011140          AND      r1,r1,r0,ASR #2
000884  e5810010          STR      r0,[r1,#0x10]
;;;274        //handshake, sync PCLK, TC int, single tx, single service, Uart1, H/W request,auto-reload off, Byte size Tx, Tx count value
;;;275    
;;;276    	// edited by junon
;;;277        // Clear Int Pending and Unmask
;;;278        ClearPending(BIT_UART1);
000888  e3a00880          MOV      r0,#0x800000
00088c  e24119c0          SUB      r1,r1,#0x300000
000890  e5810000          STR      r0,[r1,#0]
000894  e1c10000          BIC      r0,r1,r0
000898  e5900010          LDR      r0,[r0,#0x10]
00089c  e5810010          STR      r0,[r1,#0x10]
0008a0  e1a00001          MOV      r0,r1
0008a4  e5900010          LDR      r0,[r0,#0x10]
;;;279        rINTMSK=~(BIT_DMA|BIT_UART1);
0008a8  e3e00890          MVN      r0,#0x900000
0008ac  e0011000          AND      r1,r1,r0
0008b0  e5810008          STR      r0,[r1,#8]
;;;280        rSUBSRCPND=(BIT_SUB_RXD1|BIT_SUB_TXD1|BIT_SUB_ERR1|BIT_SUB_DMA1);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -