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

📄 uart2.txt

📁 SMDK2442所有设备的驱动测试程序。运行monitor程序
💻 TXT
📖 第 1 页 / 共 5 页
字号:
000610  e0800001          ADD      r0,r0,r1
000614  e59f12f8          LDR      r1,|L1.2324|
000618  e5810000          STR      r0,[r1,#0]  ; rx_checksum
;;;157        }
                  |L1.1564|
00061c  eaffffbd          B        |L1.1304|
;;;158    }
                  |L1.1568|
000620  e1a0f00e          MOV      pc,lr
                          ENDP

                  Uart2_RxFifoOrErr PROC
;;;118    void __irq Uart2_RxFifoOrErr(void)
;;;119    {
000624  e92d500f          STMFD    sp!,{r0-r3,r12,lr}
;;;120        rINTSUBMSK|=(BIT_SUB_RXD2|BIT_SUB_TXD2|BIT_SUB_ERR2);
000628  e3a0044a          MOV      r0,#0x4a000000
00062c  e590001c          LDR      r0,[r0,#0x1c]
000630  e3800f70          ORR      r0,r0,#0x1c0
000634  e3a0144a          MOV      r1,#0x4a000000
000638  e581001c          STR      r0,[r1,#0x1c]
;;;121        if(rSUBSRCPND&BIT_SUB_RXD2) __sub_Uart2_RxFifo();
00063c  e3a0044a          MOV      r0,#0x4a000000
000640  e5900018          LDR      r0,[r0,#0x18]
000644  e3100040          TST      r0,#0x40
000648  0a000001          BEQ      |L1.1620|
00064c  ebfffffe          BL       __sub_Uart2_RxFifo
000650  ea000000          B        |L1.1624|
;;;122        else __sub_Uart2_RxErrInt();
                  |L1.1620|
000654  ebfffffe          BL       __sub_Uart2_RxErrInt
;;;123        ClearPending(BIT_UART2);
                  |L1.1624|
000658  e3a00c80          MOV      r0,#0x8000
00065c  e3a0144a          MOV      r1,#0x4a000000
000660  e5810000          STR      r0,[r1,#0]
000664  e3a00c80          MOV      r0,#0x8000
000668  e3a0144a          MOV      r1,#0x4a000000
00066c  e5810010          STR      r0,[r1,#0x10]
000670  e3a0044a          MOV      r0,#0x4a000000
000674  e5900010          LDR      r0,[r0,#0x10]
;;;124        rSUBSRCPND=(BIT_SUB_RXD2|BIT_SUB_ERR2);
000678  e3a00f50          MOV      r0,#0x140
00067c  e3a0144a          MOV      r1,#0x4a000000
000680  e5810018          STR      r0,[r1,#0x18]
;;;125        rINTSUBMSK&=~(BIT_SUB_RXD2|BIT_SUB_ERR2);
000684  e3a0044a          MOV      r0,#0x4a000000
000688  e590001c          LDR      r0,[r0,#0x1c]
00068c  e3c00f50          BIC      r0,r0,#0x140
000690  e3a0144a          MOV      r1,#0x4a000000
000694  e581001c          STR      r0,[r1,#0x1c]
;;;126    }
000698  e8bd500f          LDMFD    sp!,{r0-r3,r12,lr}
00069c  e25ef004          SUBS     pc,lr,#4
                          ENDP

                  Test_Uart2_Int PROC
;;;184    void Test_Uart2_Int(void)
;;;185    {
0006a0  e92d4010          STMFD    sp!,{r4,lr}
;;;186    	U8 ch;
;;;187    	
;;;188        Uart_Port_Set(); 
0006a4  ebfffffe          BL       Uart_Port_Set
;;;189        // Additional configuration for UART2 port
;;;190        //rGPHCON&=0x3fafff;      // TXD2,RXD2
;;;191        Uart_Select(1);    
0006a8  e3a00001          MOV      r0,#1
0006ac  ebfffffe          BL       Uart_Select
;;;192    
;;;193    	/******** For operating clock test *********/
;;;194    	Uart_Printf("[Uart channel 0 Interrupt test]\n");
0006b0  e28f0f98          ADR      r0,|L1.2328|
0006b4  ebfffffe          BL       Uart_Printf
;;;195    	Uart_Printf("Select operating clock 1. PCLK(D)    2. UCLK     3. FCLK/n  \nChoose : ");
0006b8  e59f027c          LDR      r0,|L1.2364|
0006bc  ebfffffe          BL       Uart_Printf
;;;196    	ch = Uart_Getch();
0006c0  ebfffffe          BL       Uart_Getch
0006c4  e1a04000          MOV      r4,r0
;;;197    	switch (ch)
0006c8  e3540032          CMP      r4,#0x32
0006cc  0a000002          BEQ      |L1.1756|
0006d0  e3540033          CMP      r4,#0x33
0006d4  1a000009          BNE      |L1.1792|
0006d8  ea000004          B        |L1.1776|
;;;198    	{
;;;199    	case '2' :
;;;200    		Uart_Uextclk_En(2, 115200, 14745600);
                  |L1.1756|
0006dc  e3a028e1          MOV      r2,#0xe10000
0006e0  e1a013c2          MOV      r1,r2,ASR #7
0006e4  e3a00002          MOV      r0,#2
0006e8  ebfffffe          BL       Uart_Uextclk_En
;;;201    		break;
0006ec  ea000006          B        |L1.1804|
;;;202    	case '3' :
;;;203    		Uart_Fclkn_En(2, 115200);
                  |L1.1776|
0006f0  e59f1248          LDR      r1,|L1.2368|
0006f4  e3a00002          MOV      r0,#2
0006f8  ebfffffe          BL       Uart_Fclkn_En
;;;204    		break;
0006fc  ea000002          B        |L1.1804|
;;;205    	default :
;;;206    		Uart_Pclk_En(2, 115200);
                  |L1.1792|
000700  e59f1238          LDR      r1,|L1.2368|
000704  e3a00002          MOV      r0,#2
000708  ebfffffe          BL       Uart_Pclk_En
;;;207    	}
;;;208    	
;;;209    	/******** Select UART or IrDA *********/
;;;210    	Uart_Printf("Select 1. UART or 2. IrDA(D) mode\nChoose : ");
                  |L1.1804|
00070c  e28f0f8c          ADR      r0,|L1.2372|
000710  ebfffffe          BL       Uart_Printf
;;;211    	if (Uart_Getch() == '1')
000714  ebfffffe          BL       Uart_Getch
000718  e3500031          CMP      r0,#0x31
00071c  1a000005          BNE      |L1.1848|
;;;212    		rULCON2 &= ~(1<<6); // UART mode
000720  e51f05cc          LDR      r0,|L1.348|
000724  e5900000          LDR      r0,[r0,#0]
000728  e3c00040          BIC      r0,r0,#0x40
00072c  e51f15d8          LDR      r1,|L1.348|
000730  e5810000          STR      r0,[r1,#0]
000734  ea000004          B        |L1.1868|
;;;213    	else
;;;214    		rULCON2 |= (1<<6); // IrDA mode
                  |L1.1848|
000738  e51f05e4          LDR      r0,|L1.348|
00073c  e5900000          LDR      r0,[r0,#0]
000740  e3800040          ORR      r0,r0,#0x40
000744  e51f15f0          LDR      r1,|L1.348|
000748  e5810000          STR      r0,[r1,#0]
;;;215    
;;;216    
;;;217        /*********** UART2 Tx test with interrupt ***********/  
;;;218        isTxInt=1;
                  |L1.1868|
00074c  e3a00001          MOV      r0,#1
000750  e51f15f8          LDR      r1,|L1.352|
000754  e5810000          STR      r0,[r1,#0]  ; isTxInt
;;;219        uart2TxStr="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890->UART2 Tx interrupt test is good!!!!\r\n";
000758  e59f0210          LDR      r0,|L1.2416|
00075c  e51f160c          LDR      r1,|L1.344|
000760  e5810000          STR      r0,[r1,#0]  ; uart2TxStr
;;;220        Uart_Printf("[Uart channel 2 Tx Interrupt Test]\n");
000764  e28f0f82          ADR      r0,|L1.2420|
000768  ebfffffe          BL       Uart_Printf
;;;221    
;;;222        //-------------------------------------------------------------------------------------------->
;;;223        Uart_Printf("Jumper Setting  <======> J17:2-3, J19:2-3, J16: 1-2, J18:1-2");
00076c  e28f0f89          ADR      r0,|L1.2456|
000770  ebfffffe          BL       Uart_Printf
;;;224        Uart_Printf("\nConnect PC[COM1 or COM2] and UART2 of SMDK2442 with a serial cable!!! \n");
000774  e59f025c          LDR      r0,|L1.2520|
000778  ebfffffe          BL       Uart_Printf
;;;225        Uart_Printf("Then, press any key........\n");
00077c  e28f0f96          ADR      r0,|L1.2524|
000780  ebfffffe          BL       Uart_Printf
;;;226        Uart_Select(2);	// Change the uart port    
000784  e3a00002          MOV      r0,#2
000788  ebfffffe          BL       Uart_Select
;;;227        Uart_Getch();
00078c  ebfffffe          BL       Uart_Getch
;;;228        //----------------------------------------->
;;;229    
;;;230        pISR_UART2=(unsigned)Uart2_TxInt;
000790  e59f0264          LDR      r0,|L1.2556|
000794  e59f1264          LDR      r1,|L1.2560|
000798  e5810f5c          STR      r0,[r1,#0xf5c]
;;;231    
;;;232        rULCON2=(0<<6)|(0<<3)|(0<<2)|(3);	// Normal,No parity,One stop bit, 8bit
00079c  e3a00003          MOV      r0,#3
0007a0  e51f164c          LDR      r1,|L1.348|
0007a4  e5810000          STR      r0,[r1,#0]
;;;233        rUCON2 |= (TX_INTTYPE<<9)|(RX_INTTYPE<<8)|(0<<7)|(0<<6)|(0<<5)|(0<<4)|(1<<2)|(1);
0007a8  e1c10000          BIC      r0,r1,r0
0007ac  e5900004          LDR      r0,[r0,#4]
0007b0  e3800fc0          ORR      r0,r0,#0x300
0007b4  e3800005          ORR      r0,r0,#5
0007b8  e5810004          STR      r0,[r1,#4]
;;;234        //Clock,Tx:Def,Rx:Def,Rx timeout:x,Rx error int:x,Loop-back:x,Send break:x,Tx:int,Rx:int
;;;235        Uart_TxEmpty(1); //wait until tx buffer is empty.
0007bc  e3a00001          MOV      r0,#1
0007c0  ebfffffe          BL       Uart_TxEmpty
;;;236        rINTMSK=~(BIT_UART2);
0007c4  e3e00c80          MVN      r0,#0x8000
0007c8  e3a0144a          MOV      r1,#0x4a000000
0007cc  e5810008          STR      r0,[r1,#8]
;;;237        rINTSUBMSK=~(BIT_SUB_TXD2);
0007d0  e3e00080          MVN      r0,#0x80
0007d4  e3a0144a          MOV      r1,#0x4a000000
0007d8  e581001c          STR      r0,[r1,#0x1c]
;;;238    
;;;239        while(isTxInt);
0007dc  e1a00000          NOP      
                  |L1.2016|
0007e0  e51f0688          LDR      r0,|L1.352|
0007e4  e5900000          LDR      r0,[r0,#0]  ; isTxInt
0007e8  e3500000          CMP      r0,#0
0007ec  1afffffb          BNE      |L1.2016|
;;;240    
;;;241        /*********** UART2 Rx test with interrupt ***********/
;;;242        isRxInt=1;
0007f0  e3a00001          MOV      r0,#1
0007f4  e51f1658          LDR      r1,|L1.420|
0007f8  e5810000          STR      r0,[r1,#0]  ; isRxInt
;;;243        uart2RxStr=(volatile char *)UARTBUFFER;
0007fc  e3a005c4          MOV      r0,#0x31000000
000800  e51f15e8          LDR      r1,|L1.544|
000804  e5810000          STR      r0,[r1,#0]  ; uart2RxStr
;;;244        Uart_Printf("\n[Uart channel 2 Rx Interrupt Test]:\n");
000808  e28f0f7d          ADR      r0,|L1.2564|
00080c  ebfffffe          BL       Uart_Printf
;;;245        Uart_Printf("After typing ENTER key, you will see the characters which was typed by you.");
000810  e59f0214          LDR      r0,|L1.2604|
000814  ebfffffe          BL       Uart_Printf
;;;246        Uart_Printf("\nTo quit, press ENTER key.!!!\n");
000818  e28f0f84          ADR      r0,|L1.2608|
00081c  ebfffffe          BL       Uart_Printf
;;;247        
;;;248        pISR_UART2 =(unsigned)Uart2_RxIntOrErr;
000820  e59f0228          LDR      r0,|L1.2640|
000824  e59f11d4          LDR      r1,|L1.2560|
000828  e5810f5c          STR      r0,[r1,#0xf5c]
;;;249    
;;;250        rULCON2=(0<<6)|(0<<3)|(0<<2)|(3);	// Normal,No parity,One stop bit, 8bit
00082c  e3a00003          MOV      r0,#3
000830  e51f16dc          LDR      r1,|L1.348|
000834  e5810000          STR      r0,[r1,#0]
;;;251        rUCON2 |= (TX_INTTYPE<<9)|(RX_INTTYPE<<8)|(0<<7)|(1<<6)|(0<<5)|(0<<4)|(1<<2)|(1);
000838  e1c10000          BIC      r0,r1,r0
00083c  e5900004          LDR      r0,[r0,#4]
000840  e3800fc0          ORR      r0,r0,#0x300
000844  e3800045          ORR      r0,r0,#0x45
000848  e5810004          STR      r0,[r1,#4]
;;;252        //Clock,Tx:pulse,Rx:pulse,Rx timeout:x,Rx error int:o,Loop-back:x,Send break:x,Tx:int,Rx:int
;;;253    
;;;254        // Clear Int Pending and Unmask
;;;255        ClearPending(BIT_UART2);
00084c  e3a00c80          MOV      r0,#0x8000
000850  e3a0144a          MOV      r1,#0x4a000000
000854  e5810000          STR      r0,[r1,#0]
000858  e3a00c80          MOV      r0,#0x8000
00085c  e3a0144a          MOV      r1,#0x4a000000
000860  e5810010          STR      r0,[r1,#0x10]
000864  e3a0044a          MOV      r0,#0x4a000000
000868  e5900010          LDR      r0,[r0,#0x10]
;;;256        rINTMSK=~(BIT_UART2);
00086c  e3e00c80          MVN      r0,#0x8000
000870  e3a0144a          MOV      r1,#0x4a000000
000874  e5810008          STR      r0,[r1,#8]
;;;257        rSUBSRCPND=(BIT_SUB_RXD2|BIT_SUB_ERR2);
000878  e3a00f50          MOV      r0,#0x140
00087c  e3a0144a          MOV      r1,#0x4a000000
000880  e5810018          STR      r0,[r1,#0x18]
;;;258        rINTSUBMSK=~(BIT_SUB_RXD2|BIT_SUB_ERR2);
000884  e3e00f50          MVN      r0,#0x140
000888  e3a0144a          MOV      r1,#0x4a000000
00088c  e581001c          STR      r0,[r1,#0x1c]
;;;259        
;;;260        while(isRxInt);
000890  e1a00000          NOP      
                  |L1.2196|
000894  e51f06f8          LDR      r0,|L1.420|
000898  e5900000          LDR      r0,[r0,#0]  ; isRxInt
00089c  e3500000          CMP      r0,#0
0008a0  1afffffb          BNE      |L1.2196|
;;;261    
;;;262        rINTSUBMSK|=(BIT_SUB_RXD2|BIT_SUB_TXD2|BIT_SUB_ERR2);
0008a4  e3a0044a          MOV      r0,#0x4a000000
0008a8  e590001c          LDR      r0,[r0,#0x1c]
0008ac  e3800f70          ORR      r0,r0,#0x1c0
0008b0  e3a0144a          MOV      r1,#0x4a000000
0008b4  e581001c          STR      r0,[r1,#0x1c]
;;;263        rINTMSK|=(BIT_UART2);
0008b8  e3a0044a          MOV      r0,#0x4a000000
0008bc  e5900008          LDR      r0,[r0,#8]
0008c0  e3800c80          ORR      r0,r0,#0x8000
0008c4  e3a0144a          MOV      r1,#0x4a000000
0008c8  e5810008          STR      r0,[r1,#8]
;;;264    
;;;265        Uart_Printf("%s\n",(char *)UARTBUFFER);
0008cc  e3a015c4          MOV      r1,#0x31000000
0008d0  e28f0f5f          ADR      r0,|L1.2644|

⌨️ 快捷键说明

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