📄 uart2.txt
字号:
000be0 e5900004 LDR r0,[r0,#4]
000be4 e2000e40 AND r0,r0,#0x400
000be8 e5810004 STR r0,[r1,#4]
;;;333 rUCON2 |= (TX_INTTYPE<<9)|(RX_INTTYPE<<8)|(0<<7)|(1<<6)|(0<<5)|(0<<4)|(1<<2)|(2);
000bec e1a00001 MOV r0,r1
000bf0 e5900004 LDR r0,[r0,#4]
000bf4 e3800fc0 ORR r0,r0,#0x300
000bf8 e3800046 ORR r0,r0,#0x46
000bfc e5810004 STR r0,[r1,#4]
;;;334 //Clock,Tx:Def,Rx:Def,Rx timeout:x,Rx error int:o,Loop-back:x,Send break:x,Tx:int,Rx:dma3
;;;335
;;;336 /***DMA3 init***/
;;;337 rDISRC3=(U32)URXH2; // Start address
000c00 e2810024 ADD r0,r1,#0x24
000c04 e3a0144b MOV r1,#0x4b000000
000c08 e58100c0 STR r0,[r1,#0xc0]
;;;338 rDISRCC3=(1<<1)|(1); // APB,Fixed
000c0c e3a00003 MOV r0,#3
000c10 e3a0144b MOV r1,#0x4b000000
000c14 e58100c4 STR r0,[r1,#0xc4]
;;;339 rDIDST3=(U32)uart2RxStr; // Memory buffer Address
000c18 e51f0a00 LDR r0,|L1.544|
000c1c e5900000 LDR r0,[r0,#0] ; uart2RxStr
000c20 e3a0144b MOV r1,#0x4b000000
000c24 e58100c8 STR r0,[r1,#0xc8]
;;;340 rDIDSTC3= (0<<1)|(0); // AHB,Increment
000c28 e3a00000 MOV r0,#0
000c2c e3a0144b MOV r1,#0x4b000000
000c30 e58100cc STR r0,[r1,#0xcc]
;;;341 rDCON3=(1<<31)|(0<<30)|(1<<29)|(0<<28)|(0<<27)|(0<<24)|(1<<23)|(1<<22)|(0<<20)|(5);
000c34 e59f0190 LDR r0,|L1.3532|
000c38 e3a0144b MOV r1,#0x4b000000
000c3c e58100d0 STR r0,[r1,#0xd0]
;;;342 //handshake, sync PCLK, TC int, single tx, single service, Uart2, H/W request,auto-reload off, Byte size Tx, Tx count value
;;;343
;;;344 // Clear Int Pending and Unmask
;;;345 ClearPending(BIT_UART2);
000c40 e3a00c80 MOV r0,#0x8000
000c44 e3a0144a MOV r1,#0x4a000000
000c48 e5810000 STR r0,[r1,#0]
000c4c e3a00c80 MOV r0,#0x8000
000c50 e3a0144a MOV r1,#0x4a000000
000c54 e5810010 STR r0,[r1,#0x10]
000c58 e3a0044a MOV r0,#0x4a000000
000c5c e5900010 LDR r0,[r0,#0x10]
;;;346 rINTMSK=~(BIT_DMA3|BIT_UART2);
000c60 e3e00942 MVN r0,#0x108000
000c64 e3a0144a MOV r1,#0x4a000000
000c68 e5810008 STR r0,[r1,#8]
;;;347 rSUBSRCPND=(BIT_SUB_RXD2|BIT_SUB_TXD2|BIT_SUB_ERR2);
000c6c e3a00f70 MOV r0,#0x1c0
000c70 e3a0144a MOV r1,#0x4a000000
000c74 e5810018 STR r0,[r1,#0x18]
;;;348 rINTSUBMSK=~(BIT_SUB_ERR2);
000c78 e3e00f40 MVN r0,#0x100
000c7c e3a0144a MOV r1,#0x4a000000
000c80 e581001c STR r0,[r1,#0x1c]
;;;349 rDMASKTRIG3=(0<<2)|(1<<1)|(0); //no-stop, DMA3 channel on, no-SW trigger
000c84 e3a00002 MOV r0,#2
000c88 e3a0144b MOV r1,#0x4b000000
000c8c e58100e0 STR r0,[r1,#0xe0]
;;;350
;;;351 while(isDone);
000c90 e1a00000 NOP
|L1.3220|
000c94 e51f08bc LDR r0,|L1.992|
000c98 e5900000 LDR r0,[r0,#0] ; isDone
000c9c e3500000 CMP r0,#0
000ca0 1afffffb BNE |L1.3220|
;;;352
;;;353 Uart_Printf("%s\n",uart2RxStr);
000ca4 e51f0a8c LDR r0,|L1.544|
000ca8 e5901000 LDR r1,[r0,#0] ; uart2RxStr
000cac e24f0f98 ADR r0,|L1.2644|
000cb0 ebfffffe BL Uart_Printf
;;;354
;;;355
;;;356 //----------------------------------------------------------------------------------------->
;;;357 Uart_Printf("Jumper Setting <======> J16: 2-3, J18:2-3");
000cb4 e24f0f99 ADR r0,|L1.2648|
000cb8 ebfffffe BL Uart_Printf
;;;358 Uart_Printf("\nConnect PC[COM1 or COM2] and UART1 of SMDK2442 with a serial cable!!! \n");
000cbc e51f0240 LDR r0,|L1.2692|
000cc0 ebfffffe BL Uart_Printf
;;;359 Uart_Printf("Then, press any key........\n");
000cc4 e24f0fbc ADR r0,|L1.2524|
000cc8 ebfffffe BL Uart_Printf
;;;360 Uart_Select(1);
000ccc e3a00001 MOV r0,#1
000cd0 ebfffffe BL Uart_Select
;;;361 Uart_Getch();
000cd4 ebfffffe BL Uart_Getch
;;;362 //--------------------------->
;;;363
;;;364
;;;365 Uart_Port_Return();
000cd8 ebfffffe BL Uart_Port_Return
;;;366 }
000cdc e8bd8008 LDMFD sp!,{r3,pc}
|L1.3296|
000ce0 00000178 DCD ||.constdata$1|| + 376
|L1.3300|
000ce4 61555b0a DCB "\n[Ua"
000ce8 63207472 DCB "rt c"
000cec 6e6e6168 DCB "hann"
000cf0 32206c65 DCB "el 2"
000cf4 414d4420 DCB " DMA"
000cf8 78542033 DCB "3 Tx"
000cfc 73655420 DCB " Tes"
000d00 000a5d74 DCB "t]\n\0"
|L1.3332|
000d04 706d754a DCB "Jump"
000d08 53207265 DCB "er S"
000d0c 69747465 DCB "etti"
000d10 2020676e DCB "ng "
000d14 3d3d3d3c DCB "<==="
000d18 3e3d3d3d DCB "===>"
000d1c 314a2020 DCB " J1"
000d20 2d323a37 DCB "7:2-"
000d24 4a202c33 DCB "3, J"
000d28 323a3931 DCB "19:2"
000d2c 202c332d DCB "-3, "
000d30 3a36314a DCB "J16:"
000d34 322d3120 DCB " 1-2"
000d38 314a202c DCB ", J1"
000d3c 2d313a38 DCB "8:1-"
000d40 00000032 DCB "2\0\0\0"
|L1.3396|
000d44 74726f50 DCB "Port"
000d48 20736920 DCB " is "
000d4c 6e616863 DCB "chan"
000d50 2e646567 DCB "ged."
000d54 2e2e2e2e DCB "...."
000d58 000a2e2e DCB "..\n\0"
|L1.3420|
000d5c 00000000 DCD Uart2_TxDmaDone
|L1.3424|
000d60 00000309 DCD 0x00000309
|L1.3428|
000d64 50008020 DCD 0x50008020
|L1.3432|
000d68 61555b0a DCB "\n[Ua"
000d6c 63207472 DCB "rt c"
000d70 6e6e6168 DCB "hann"
000d74 32206c65 DCB "el 2"
000d78 414d4420 DCB " DMA"
000d7c 78522033 DCB "3 Rx"
000d80 73655420 DCB " Tes"
000d84 000a5d74 DCB "t]\n\0"
|L1.3464|
000d88 65707954 DCB "Type"
000d8c 796e6120 DCB " any"
000d90 76696620 DCB " fiv"
000d94 656b2065 DCB "e ke"
000d98 21217379 DCB "ys!!"
000d9c 00000a21 DCB "!\n\0\0"
|L1.3488|
000da0 6e656854 DCB "Then"
000da4 756f7920 DCB " you"
000da8 6c697720 DCB " wil"
000dac 6573206c DCB "l se"
000db0 68772065 DCB "e wh"
000db4 79207461 DCB "at y"
000db8 7420756f DCB "ou t"
000dbc 64657079 DCB "yped"
000dc0 00000a2e DCB ".\n\0\0"
|L1.3524|
000dc4 00000000 DCD Uart2_RxDmaDone
|L1.3528|
000dc8 00000000 DCD Uart2_RxDmaOrErr
|L1.3532|
000dcc a0c00005 DCD 0xa0c00005
ENDP
Test_Uart2_Fifo PROC
;;;368 void Test_Uart2_Fifo(void)
;;;369 {
000dd0 e92d4008 STMFD sp!,{r3,lr}
;;;370 Uart_Port_Set();
000dd4 ebfffffe BL Uart_Port_Set
;;;371 // Additional configuration for UART2 port
;;;372 //rGPHCON&=0x3fafff; // TXD2,RXD2
;;;373
;;;374 Uart_Select(1);
000dd8 e3a00001 MOV r0,#1
000ddc ebfffffe BL Uart_Select
;;;375 /******* UART2 Tx FIFO test with interrupt ********/
;;;376 Uart_Printf("[Uart channel 2 Tx FIFO Interrupt Test]\n");
000de0 e28f0f9f ADR r0,|L1.4196|
000de4 ebfffffe BL Uart_Printf
;;;377 Uart_TxEmpty(1); //wait until tx buffer is empty.
000de8 e3a00001 MOV r0,#1
000dec ebfffffe BL Uart_TxEmpty
;;;378
;;;379 //-------------------------------------------------------------------------------------------->
;;;380 Uart_Printf(" Jumper Setting <======> J17:2-3, J19:2-3, J16: 1-2, J18:1-2");
000df0 e28f0fa6 ADR r0,|L1.4240|
000df4 ebfffffe BL Uart_Printf
;;;381 Uart_Printf("\nConnect PC[COM1 or COM2] and UART2 of SMDK2442 with a serial cable!!! \n");
000df8 e51f0428 LDR r0,|L1.2520|
000dfc ebfffffe BL Uart_Printf
;;;382 Uart_Printf("Then, press any key........\n");
000e00 e59f02c8 LDR r0,|L1.4304|
000e04 ebfffffe BL Uart_Printf
;;;383 Uart_Select(2); // Change the uart port
000e08 e3a00002 MOV r0,#2
000e0c ebfffffe BL Uart_Select
;;;384 Uart_Getch();
000e10 ebfffffe BL Uart_Getch
;;;385 //----------------------------------------->
;;;386
;;;387
;;;388 /* <Tx Trigger Level:8Byte> */
;;;389 uart2TxStr="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890->UART2 Tx FIFO interrupt(8byte) test is good!!!!\r\n";
000e14 e59f02b8 LDR r0,|L1.4308|
000e18 e51f1cc8 LDR r1,|L1.344|
000e1c e5810000 STR r0,[r1,#0] ; uart2TxStr
;;;390 pISR_UART2=(U32)Uart2_TxFifo;
000e20 e59f02b0 LDR r0,|L1.4312|
000e24 e51f142c LDR r1,|L1.2560|
000e28 e5810f5c STR r0,[r1,#0xf5c]
;;;391 rULCON2=(0<<6)|(0<<3)|(0<<2)|(3); // Normal,No parity,One stop bit, 8bit
000e2c e3a00003 MOV r0,#3
000e30 e51f1cdc LDR r1,|L1.348|
000e34 e5810000 STR r0,[r1,#0]
;;;392 rUCON2 |= (TX_INTTYPE<<9)|(RX_INTTYPE<<8)|(0<<7)|(0<<6)|(0<<5)|(0<<4)|(1<<2)|(1);
000e38 e1c10000 BIC r0,r1,r0
000e3c e5900004 LDR r0,[r0,#4]
000e40 e3800fc0 ORR r0,r0,#0x300
000e44 e3800005 ORR r0,r0,#5
000e48 e5810004 STR r0,[r1,#4]
;;;393 //Clock,Tx:Def,Rx:Def,Rx timeout:x,Rx error int:x,Loop-back:x,Send break:x,Tx:int,Rx:int
;;;394 rUFCON2=(2<<6)|(1<<4)|(1<<2)|(1<<1)|(1);
000e4c e3a00097 MOV r0,#0x97
000e50 e1c11000 BIC r1,r1,r0
000e54 e5810008 STR r0,[r1,#8]
;;;395 //Tx and Rx FIFO Trigger Level:8byte,Tx and Rx FIFO Reset,FIFO on
;;;396 rINTMSK=~(BIT_UART2);
000e58 e3e00c80 MVN r0,#0x8000
000e5c e3a0144a MOV r1,#0x4a000000
000e60 e5810008 STR r0,[r1,#8]
;;;397 rINTSUBMSK=~(BIT_SUB_TXD2);
000e64 e3e00080 MVN r0,#0x80
000e68 e3a0144a MOV r1,#0x4a000000
000e6c e581001c STR r0,[r1,#0x1c]
;;;398 Delay(500);
000e70 e3a00f7d MOV r0,#0x1f4
000e74 ebfffffe BL Delay
;;;399 rUFCON2=(2<<6)|(1<<4)|(1<<2)|(1<<1)|(0);
000e78 e3a00096 MOV r0,#0x96
000e7c e51f1d28 LDR r1,|L1.348|
000e80 e5810008 STR r0,[r1,#8]
;;;400 //Tx and Rx FIFO Trigger Level:8byte,Tx and Rx FIFO Reset,FIFO off
;;;401
;;;402 /* <Tx Trigger Level:12Byte> */
;;;403 uart2TxStr="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890->UART2 Tx FIFO interrupt(12byte) test is good!!!!\r\n";
000e84 e59f0250 LDR r0,|L1.4316|
000e88 e51f1d38 LDR r1,|L1.344|
000e8c e5810000 STR r0,[r1,#0] ; uart2TxStr
;;;404 pISR_UART2=(unsigned)Uart2_TxFifo;
000e90 e59f0240 LDR r0,|L1.4312|
000e94 e51f149c LDR r1,|L1.2560|
000e98 e5810f5c STR r0,[r1,#0xf5c]
;;;405 rULCON2=(0<<6)|(0<<3)|(0<<2)|(3); // Normal,No parity,One stop bit, 8bit
000e9c e3a00003 MOV r0,#3
000ea0 e51f1d4c LDR r1,|L1.348|
000ea4 e5810000 STR r0,[r1,#0]
;;;406 rUCON2 |= (TX_INTTYPE<<9)|(RX_INTTYPE<<8)|(0<<7)|(0<<6)|(0<<5)|(0<<4)|(1<<2)|(1);
000ea8 e1c10000 BIC r0,r1,r0
000eac e5900004 LDR r0,[r0,#4]
000eb0 e3800fc0 ORR r0,r0,#0x300
000eb4 e3800005 ORR r0,r0,#5
000eb8 e5810004 STR r0,[r1,#4]
;;;407 //Clock,Tx:Def,Rx:Def,Rx timeout:x,Rx error int:x,Loop-back:x,Send break:x,Tx:int,Rx:int
;;;408 rUFCON2=(3<<6)|(2<<4)|(1<<2)|(1<<1)|(1);
000ebc e3a000e7 MOV r0,#0xe7
000ec0 e1c11000 BIC r1,r1,r0
000ec4 e5810008 STR r0,[r1,#8]
;;;409 //Tx and Rx FIFO Trigger Level:12byte,Tx and Rx FIFO Reset,FIFO on
;;;410 rINTMSK=~(BIT_UART2);
000ec8 e3e00c80 MVN r0,#0x8000
000ecc e3a0144a MOV r1,#0x4a000000
000ed0 e5810008 STR r0,[r1,#8]
;;;411 rINTSUBMSK=~(BIT_SUB_TXD2);
000ed4 e3e00080 MVN r0,#0x80
000ed8 e3a0144a MOV r1,#0x4a000000
000edc e5810
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -