📄 uart2.txt
字号:
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 + -