📄 uart1.txt
字号:
;;;114 uart1TxStr="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890->UART1 Tx interrupt test is good!!!!\r\n";
0002b8 e59f01b4 LDR r0,|L1.1140|
0002bc e51f1170 LDR r1,|L1.340|
0002c0 e5810000 STR r0,[r1,#0] ; uart1TxStr
;;;115 Uart_Printf("[Uart channel 1 Tx Interrupt Test]\n");
0002c4 e28f0f6b ADR r0,|L1.1144|
0002c8 ebfffffe BL _printf
;;;116
;;;117 //-------------------------------------------------------------------------------------------->
;;;118 Uart_Printf("\nConnect PC[COM1 or COM2] and UART1 of SMDK24A0 with a serial cable!!! \n");
0002cc e59f01c8 LDR r0,|L1.1180|
0002d0 ebfffffe BL _printf
;;;119 Uart_Printf("Then, press any key........\n");
0002d4 e28f0f71 ADR r0,|L1.1184|
0002d8 ebfffffe BL _printf
;;;120 Uart_Select(1); // Change the uart port
0002dc e3a00001 MOV r0,#1
0002e0 ebfffffe BL Uart_Select
;;;121 Uart_Getch();
0002e4 ebfffffe BL Uart_Getch
;;;122 //----------------------------------------->
;;;123
;;;124 pISR_UART1=(unsigned)Uart1_TxInt;
0002e8 e59f01d0 LDR r0,|L1.1216|
0002ec e59f11d0 LDR r1,|L1.1220|
0002f0 e5810f7c STR r0,[r1,#0xf7c]
;;;125
;;;126 rULCON1=(0<<6)|(0<<3)|(0<<2)|(3); // Normal,No parity,One stop bit, 8bit
0002f4 e3a00003 MOV r0,#3
0002f8 e51f11a8 LDR r1,|L1.344|
0002fc e5810000 STR r0,[r1,#0]
;;;127 rUCON1 &= 0x400; // For the PCLK <-> UCLK fuction
000300 e1c10000 BIC r0,r1,r0
000304 e5900004 LDR r0,[r0,#4]
000308 e2000e40 AND r0,r0,#0x400
00030c e5810004 STR r0,[r1,#4]
;;;128 rUCON1 |= (TX_INTTYPE<<9)|(RX_INTTYPE<<8)|(0<<7)|(0<<6)|(0<<5)|(0<<4)|(1<<2)|(1);
000310 e1a00001 MOV r0,r1
000314 e5900004 LDR r0,[r0,#4]
000318 e3800005 ORR r0,r0,#5
00031c e5810004 STR r0,[r1,#4]
;;;129 //Clock,Tx:Def,Rx:Def,Rx timeout:x,Rx error int:x,Loop-back:x,Send break:x,Tx:int,Rx:int
;;;130 Uart_TxEmpty(0); //wait until tx buffer is empty.
000320 e3a00000 MOV r0,#0
000324 ebfffffe BL Uart_TxEmpty
;;;131 rINTMSK=~(BIT_UART1);
000328 e3e00880 MVN r0,#0x800000
00032c e51f11e4 LDR r1,|L1.336|
000330 e5810008 STR r0,[r1,#8]
;;;132 rINTSUBMSK=~(BIT_SUB_TXD1);
000334 e3e00010 MVN r0,#0x10
000338 e0011000 AND r1,r1,r0
00033c e581001c STR r0,[r1,#0x1c]
;;;133
;;;134 while(isTxInt);
000340 e1a00000 NOP
|L1.836|
000344 e51f01f0 LDR r0,|L1.348|
000348 e5900000 LDR r0,[r0,#0] ; isTxInt
00034c e3500000 CMP r0,#0
000350 1afffffb BNE |L1.836|
;;;135
;;;136 /*********** UART1 Rx test with interrupt ***********/
;;;137 isRxInt=1;
000354 e3a00001 MOV r0,#1
000358 e51f11f8 LDR r1,|L1.360|
00035c e5810000 STR r0,[r1,#0] ; isRxInt
;;;138 uart1RxStr=(volatile char *)UARTBUFFER;
000360 e3a00544 MOV r0,#0x11000000
000364 e51f1208 LDR r1,|L1.356|
000368 e5810000 STR r0,[r1,#0] ; uart1RxStr
;;;139 Uart_Printf("\n[Uart channel 1 Rx Interrupt Test]:\n");
00036c e28f0f55 ADR r0,|L1.1224|
000370 ebfffffe BL _printf
;;;140 Uart_Printf("After typing ENTER key, you will see the characters which was typed by you.");
000374 e59f0174 LDR r0,|L1.1264|
000378 ebfffffe BL _printf
;;;141 Uart_Printf("\nTo quit, press ENTER key.!!!\n");
00037c e28f0f5c ADR r0,|L1.1268|
000380 ebfffffe BL _printf
;;;142
;;;143 pISR_UART1 =(unsigned)Uart1_RxIntOrErr;
000384 e59f0188 LDR r0,|L1.1300|
000388 e59f1134 LDR r1,|L1.1220|
00038c e5810f7c STR r0,[r1,#0xf7c]
;;;144
;;;145 rULCON1=(0<<6)|(0<<3)|(0<<2)|(3); // Normal,No parity,One stop bit, 8bit
000390 e3a00003 MOV r0,#3
000394 e51f1244 LDR r1,|L1.344|
000398 e5810000 STR r0,[r1,#0]
;;;146 rUCON1 &= 0x400; // For the PCLK <-> UCLK fuction
00039c e1c10000 BIC r0,r1,r0
0003a0 e5900004 LDR r0,[r0,#4]
0003a4 e2000e40 AND r0,r0,#0x400
0003a8 e5810004 STR r0,[r1,#4]
;;;147 rUCON1 |= (TX_INTTYPE<<9)|(RX_INTTYPE<<8)|(0<<7)|(1<<6)|(0<<5)|(0<<4)|(1<<2)|(1);
0003ac e1a00001 MOV r0,r1
0003b0 e5900004 LDR r0,[r0,#4]
0003b4 e3800045 ORR r0,r0,#0x45
0003b8 e5810004 STR r0,[r1,#4]
;;;148 //Clock,Tx:pulse,Rx:pulse,Rx timeout:x,Rx error int:o,Loop-back:x,Send break:x,Tx:int,Rx:int
;;;149
;;;150 // Clear Int Pending and Unmask
;;;151 ClearPending(BIT_UART1);
0003bc e3a00880 MOV r0,#0x800000
0003c0 e51f1278 LDR r1,|L1.336|
0003c4 e5810000 STR r0,[r1,#0]
0003c8 e1c10000 BIC r0,r1,r0
0003cc e5900010 LDR r0,[r0,#0x10]
0003d0 e5810010 STR r0,[r1,#0x10]
0003d4 e1a00001 MOV r0,r1
0003d8 e5900010 LDR r0,[r0,#0x10]
;;;152 rINTMSK=~(BIT_UART1);
0003dc e3e00880 MVN r0,#0x800000
0003e0 e0011000 AND r1,r1,r0
0003e4 e5810008 STR r0,[r1,#8]
;;;153 rSUBSRCPND=(BIT_SUB_TXD1|BIT_SUB_RXD1|BIT_SUB_ERR1);
0003e8 e3a00038 MOV r0,#0x38
0003ec e1c11000 BIC r1,r1,r0
0003f0 e5810018 STR r0,[r1,#0x18]
;;;154 rINTSUBMSK=~(BIT_SUB_RXD1|BIT_SUB_ERR1);
0003f4 e3e00028 MVN r0,#0x28
0003f8 e0011000 AND r1,r1,r0
0003fc e581001c STR r0,[r1,#0x1c]
;;;155
;;;156 rUFCON1 = 0x00; // FIFO disable
000400 e3a00000 MOV r0,#0
000404 e51f12b4 LDR r1,|L1.344|
000408 e5810008 STR r0,[r1,#8]
;;;157
;;;158 while(isRxInt);
00040c e1a00000 NOP
|L1.1040|
000410 e51f02b0 LDR r0,|L1.360|
000414 e5900000 LDR r0,[r0,#0] ; isRxInt
000418 e3500000 CMP r0,#0
00041c 1afffffb BNE |L1.1040|
;;;159
;;;160 rINTSUBMSK|=(BIT_SUB_RXD1|BIT_SUB_TXD1|BIT_SUB_ERR1);
000420 e51f02d8 LDR r0,|L1.336|
000424 e590001c LDR r0,[r0,#0x1c]
000428 e3800038 ORR r0,r0,#0x38
00042c e51f12e4 LDR r1,|L1.336|
000430 e581001c STR r0,[r1,#0x1c]
;;;161 rINTMSK|=(BIT_UART1);
000434 e1a00001 MOV r0,r1
000438 e5900008 LDR r0,[r0,#8]
00043c e3800880 ORR r0,r0,#0x800000
000440 e5810008 STR r0,[r1,#8]
;;;162
;;;163 Uart_Printf("%s\n",(char *)UARTBUFFER);
000444 e3a01544 MOV r1,#0x11000000
000448 e28f00c8 ADR r0,|L1.1304|
00044c ebfffffe BL _printf
;;;164
;;;165
;;;166 //----------------------------------------------------------------------------------------->
;;;167 Uart_Printf("\nConnect PC[COM1 or COM2] and UART0 of SMDK24A0 with a serial cable!!! \n");
000450 e59f00c4 LDR r0,|L1.1308|
000454 ebfffffe BL _printf
;;;168 Uart_Printf("Then, press any key........\n");
000458 e28f0040 ADR r0,|L1.1184|
00045c ebfffffe BL _printf
;;;169 Uart_Select(0);
000460 e3a00000 MOV r0,#0
000464 ebfffffe BL Uart_Select
;;;170 Uart_Getch();
000468 ebfffffe BL Uart_Getch
;;;171 //--------------------------->
;;;172
;;;173
;;;174 Uart_Port_Return();
00046c ebfffffe BL Uart_Port_Return
;;;175 }
000470 e8bd8008 LDMFD sp!,{r3,pc}
|L1.1140|
000474 00000000 DCD ||.constdata$1||
|L1.1144|
000478 7261555b DCB "[Uar"
00047c 68632074 DCB "t ch"
000480 656e6e61 DCB "anne"
000484 2031206c DCB "l 1 "
000488 49207854 DCB "Tx I"
00048c 7265746e DCB "nter"
000490 74707572 DCB "rupt"
000494 73655420 DCB " Tes"
000498 000a5d74 DCB "t]\n\0"
|L1.1180|
00049c 0000004c DCD ||.constdata$1|| + 76
|L1.1184|
0004a0 6e656854 DCB "Then"
0004a4 7270202c DCB ", pr"
0004a8 20737365 DCB "ess "
0004ac 20796e61 DCB "any "
0004b0 2e79656b DCB "key."
0004b4 2e2e2e2e DCB "...."
0004b8 0a2e2e2e DCB "...\n"
0004bc 00000000 DCB "\0\0\0\0"
|L1.1216|
0004c0 00000000 DCD Uart1_TxInt
|L1.1220|
0004c4 13fff000 DCD 0x13fff000
|L1.1224|
0004c8 61555b0a DCB "\n[Ua"
0004cc 63207472 DCB "rt c"
0004d0 6e6e6168 DCB "hann"
0004d4 31206c65 DCB "el 1"
0004d8 20785220 DCB " Rx "
0004dc 65746e49 DCB "Inte"
0004e0 70757272 DCB "rrup"
0004e4 65542074 DCB "t Te"
0004e8 3a5d7473 DCB "st]:"
0004ec 0000000a DCB "\n\0\0\0"
|L1.1264|
0004f0 00000098 DCD ||.constdata$1|| + 152
|L1.1268|
0004f4 206f540a DCB "\nTo "
0004f8 74697571 DCB "quit"
0004fc 7270202c DCB ", pr"
000500 20737365 DCB "ess "
000504 45544e45 DCB "ENTE"
000508 656b2052 DCB "R ke"
00050c 21212e79 DCB "y.!!"
000510 00000a21 DCB "!\n\0\0"
|L1.1300|
000514 00000000 DCD Uart1_RxIntOrErr
|L1.1304|
000518 000a7325 DCB "%s\n\0"
|L1.1308|
00051c 000000e4 DCD ||.constdata$1|| + 228
ENDP
Uart1_TxDmaDone PROC
;;;178 void __irq Uart1_TxDmaDone(void)
;;;179 {
000520 e92d0003 STMFD sp!,{r0,r1}
;;;180 rDMASKTRIG1=0x0; // Stop Dma1
000524 e3a00000 MOV r0,#0
000528 e59f1164 LDR r1,|L1.1684|
00052c e5810020 STR r0,[r1,#0x20]
;;;181 isDone=0;
000530 e3a00000 MOV r0,#0
000534 e59f115c LDR r1,|L1.1688|
000538 e5810000 STR r0,[r1,#0] ; isDone
;;;182 // edited by junon
;;;183 rINTSUBMSK|=(BIT_SUB_DMA1);
00053c e51f03f4 LDR r0,|L1.336|
000540 e590001c LDR r0,[r0,#0x1c]
000544 e3800640 ORR r0,r0,#0x4000000
000548 e51f1400 LDR r1,|L1.336|
00054c e581001c STR r0,[r1,#0x1c]
;;;184 rSUBSRCPND=(BIT_SUB_DMA1); // clear sub source pending bit
000550 e3a00640 MOV r0,#0x4000000
000554 e1c11000 BIC r1,r1,r0
000558 e5810018 STR r0,[r1,#0x18]
;;;185 rINTMSK |= BIT_DMA;
00055c e1c10000 BIC r0,r1,r0
000560 e5900008 LDR r0,[r0,#8]
000564 e3800940 ORR r0,r0,#0x100000
000568 e5810008 STR r0,[r1,#8]
;;;186 ClearPending(BIT_DMA);
00056c e3a00940 MOV r0,#0x100000
000570 e1c11000 BIC r1,r1,r0
000574 e5810000 STR r0,[r1,#0]
000578 e1c10000 BIC r0,r1,r0
00057c e5900010 LDR r0,[r0,#0x10]
000580 e5810010 STR r0,[r1,#0x10]
000584 e1a00001 MOV r0,r1
000588 e5900010 LDR r0,[r0,#0x10]
;;;187 // end junon
;;;188 }
00058c e8bd0003 LDMFD sp!,{r0,r1}
000590 e25ef004 SUBS pc,lr,#4
ENDP
Uart1_RxDmaDone PROC
;;;190 void __irq Uart1_RxDmaDone(void)
;;;191 {
000594 e92d0003 STMFD sp!,{r0,r1}
;;;192 rDMASKTRIG1=0x0; //DMA1 Channel Off
000598 e3a00000 MOV r0,#0
00059c e59f10f0 LDR r1,|L1.1684|
0005a0 e5810020 STR r0,[r1,#0x20]
;;;193 isDone=0;
0005a4 e3a00000 MOV r0,#0
0005a8 e59f10e8 LDR r1,|L1.1688|
0005ac e5810000 STR r0,[r1,#0] ; isDone
;;;194 *(uart1RxStr+5)='\0';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -