📄 uart1.txt
字号:
Uart1_RxFifoOrErr PROC
;;;322 void __irq Uart1_RxFifoOrErr(void)
;;;323 {
000be0 e92d500f STMFD sp!,{r0-r3,r12,lr}
;;;324 rINTSUBMSK|=(BIT_SUB_RXD1|BIT_SUB_TXD1|BIT_SUB_ERR1);
000be4 e51f0a9c LDR r0,|L1.336|
000be8 e590001c LDR r0,[r0,#0x1c]
000bec e3800038 ORR r0,r0,#0x38
000bf0 e51f1aa8 LDR r1,|L1.336|
000bf4 e581001c STR r0,[r1,#0x1c]
;;;325 if(rSUBSRCPND&BIT_SUB_RXD1) __sub_Uart1_RxFifo();
000bf8 e1a00001 MOV r0,r1
000bfc e5900018 LDR r0,[r0,#0x18]
000c00 e3100008 TST r0,#8
000c04 0a000001 BEQ |L1.3088|
000c08 ebfffffe BL __sub_Uart1_RxFifo
000c0c ea000000 B |L1.3092|
;;;326 else __sub_Uart1_RxErrInt();
|L1.3088|
000c10 ebfffffe BL __sub_Uart1_RxErrInt
;;;327 ClearPending(BIT_UART1);
|L1.3092|
000c14 e3a00880 MOV r0,#0x800000
000c18 e51f1ad0 LDR r1,|L1.336|
000c1c e5810000 STR r0,[r1,#0]
000c20 e1c10000 BIC r0,r1,r0
000c24 e5900010 LDR r0,[r0,#0x10]
000c28 e5810010 STR r0,[r1,#0x10]
000c2c e1a00001 MOV r0,r1
000c30 e5900010 LDR r0,[r0,#0x10]
;;;328 rSUBSRCPND=(BIT_SUB_RXD1|BIT_SUB_ERR1);
000c34 e3a00028 MOV r0,#0x28
000c38 e1c11000 BIC r1,r1,r0
000c3c e5810018 STR r0,[r1,#0x18]
;;;329 rINTSUBMSK&=~(BIT_SUB_RXD1|BIT_SUB_ERR1);
000c40 e1c10000 BIC r0,r1,r0
000c44 e590001c LDR r0,[r0,#0x1c]
000c48 e3c00028 BIC r0,r0,#0x28
000c4c e581001c STR r0,[r1,#0x1c]
;;;330 }
000c50 e8bd500f LDMFD sp!,{r0-r3,r12,lr}
000c54 e25ef004 SUBS pc,lr,#4
ENDP
Test_Uart1_Fifo PROC
;;;349 void Test_Uart1_Fifo(void)
;;;350 {
000c58 e92d4008 STMFD sp!,{r3,lr}
;;;351 Uart_Port_Set();
000c5c ebfffffe BL Uart_Port_Set
;;;352 Uart_Select(0);
000c60 e3a00000 MOV r0,#0
000c64 ebfffffe BL Uart_Select
;;;353 /******* UART1 Tx FIFO test with interrupt ********/
;;;354 Uart_Printf("[Uart channel 1 Tx FIFO Interrupt Test]\n");
000c68 e28f0fa8 ADR r0,|L1.3856|
000c6c ebfffffe BL _printf
;;;355 Uart_TxEmpty(0); //wait until tx buffer is empty.
000c70 e3a00000 MOV r0,#0
000c74 ebfffffe BL Uart_TxEmpty
;;;356
;;;357 //-------------------------------------------------------------------------------------------->
;;;358 Uart_Printf("\nConnect PC[COM1 or COM2] and UART1 of SMDK24A0 with a serial cable!!! \n");
000c78 e51f07e4 LDR r0,|L1.1180|
000c7c ebfffffe BL _printf
;;;359 Uart_Printf("Then, press any key........\n");
000c80 e51f02cc LDR r0,|L1.2492|
000c84 ebfffffe BL _printf
;;;360 Uart_Select(1); // Change the uart port
000c88 e3a00001 MOV r0,#1
000c8c ebfffffe BL Uart_Select
;;;361 Uart_Getch();
000c90 ebfffffe BL Uart_Getch
;;;362 //----------------------------------------->
;;;363
;;;364
;;;365 /* <Tx Trigger Level:32Byte> */
;;;366 uart1TxStr="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890->UART1 Tx FIFO interrupt(32byte) test is good!!!!\r\n";
000c94 e59f02a0 LDR r0,|L1.3900|
000c98 e51f1b4c LDR r1,|L1.340|
000c9c e5810000 STR r0,[r1,#0] ; uart1TxStr
;;;367 pISR_UART1=(U32)Uart1_TxFifo;
000ca0 e59f0298 LDR r0,|L1.3904|
000ca4 e51f17e8 LDR r1,|L1.1220|
000ca8 e5810f7c STR r0,[r1,#0xf7c]
;;;368 rULCON1=(0<<6)|(0<<3)|(0<<2)|(3); // Normal,No parity,One stop bit, 8bit
000cac e3a00003 MOV r0,#3
000cb0 e51f1b60 LDR r1,|L1.344|
000cb4 e5810000 STR r0,[r1,#0]
;;;369 rUCON1 &= 0x400; // For the PCLK <-> UCLK fuction
000cb8 e1c10000 BIC r0,r1,r0
000cbc e5900004 LDR r0,[r0,#4]
000cc0 e2000e40 AND r0,r0,#0x400
000cc4 e5810004 STR r0,[r1,#4]
;;;370 rUCON1 |= (TX_INTTYPE<<9)|(RX_INTTYPE<<8)|(0<<7)|(0<<6)|(0<<5)|(0<<4)|(1<<2)|(1);
000cc8 e1a00001 MOV r0,r1
000ccc e5900004 LDR r0,[r0,#4]
000cd0 e3800005 ORR r0,r0,#5
000cd4 e5810004 STR r0,[r1,#4]
;;;371 //Clock,Tx:Def,Rx:Def,Rx timeout:x,Rx error int:x,Loop-back:x,Send break:x,Tx:int,Rx:int
;;;372 rUFCON1=(2<<6)|(1<<4)|(1<<2)|(1<<1)|(1);
000cd8 e3a00097 MOV r0,#0x97
000cdc e1c11000 BIC r1,r1,r0
000ce0 e5810008 STR r0,[r1,#8]
;;;373 //Tx and Rx FIFO Trigger Level:32byte,Tx and Rx FIFO Reset,FIFO on
;;;374 rINTMSK=~(BIT_UART1);
000ce4 e3e00880 MVN r0,#0x800000
000ce8 e51f1ba0 LDR r1,|L1.336|
000cec e5810008 STR r0,[r1,#8]
;;;375 rINTSUBMSK=~(BIT_SUB_TXD1);
000cf0 e3e00010 MVN r0,#0x10
000cf4 e0011000 AND r1,r1,r0
000cf8 e581001c STR r0,[r1,#0x1c]
;;;376 Delay(500);
000cfc e3a00f7d MOV r0,#0x1f4
000d00 ebfffffe BL Delay
;;;377 rUFCON1=(2<<6)|(1<<4)|(1<<2)|(1<<1)|(0);
000d04 e3a00096 MOV r0,#0x96
000d08 e51f1bb8 LDR r1,|L1.344|
000d0c e5810008 STR r0,[r1,#8]
;;;378 //Tx and Rx FIFO Trigger Level:8byte,Tx and Rx FIFO Reset,FIFO off
;;;379
;;;380 /* <Tx Trigger Level:48Byte> */
;;;381 uart1TxStr="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890->UART1 Tx FIFO interrupt(48byte) test is good!!!!\r\n";
000d10 e59f022c LDR r0,|L1.3908|
000d14 e51f1bc8 LDR r1,|L1.340|
000d18 e5810000 STR r0,[r1,#0] ; uart1TxStr
;;;382 pISR_UART1=(unsigned)Uart1_TxFifo;
000d1c e59f021c LDR r0,|L1.3904|
000d20 e51f1864 LDR r1,|L1.1220|
000d24 e5810f7c STR r0,[r1,#0xf7c]
;;;383 rULCON1=(0<<6)|(0<<3)|(0<<2)|(3); // Normal,No parity,One stop bit, 8bit
000d28 e3a00003 MOV r0,#3
000d2c e51f1bdc LDR r1,|L1.344|
000d30 e5810000 STR r0,[r1,#0]
;;;384 rUCON1 &= 0x400; // For the PCLK <-> UCLK fuction
000d34 e1c10000 BIC r0,r1,r0
000d38 e5900004 LDR r0,[r0,#4]
000d3c e2000e40 AND r0,r0,#0x400
000d40 e5810004 STR r0,[r1,#4]
;;;385 rUCON1 |= (TX_INTTYPE<<9)|(RX_INTTYPE<<8)|(0<<7)|(0<<6)|(0<<5)|(0<<4)|(1<<2)|(1);
000d44 e1a00001 MOV r0,r1
000d48 e5900004 LDR r0,[r0,#4]
000d4c e3800005 ORR r0,r0,#5
000d50 e5810004 STR r0,[r1,#4]
;;;386 //Clock,Tx:Def,Rx:Def,Rx timeout:x,Rx error int:x,Loop-back:x,Send break:x,Tx:int,Rx:int
;;;387 rUFCON1=(3<<6)|(2<<4)|(1<<2)|(1<<1)|(1);
000d54 e3a000e7 MOV r0,#0xe7
000d58 e1c11000 BIC r1,r1,r0
000d5c e5810008 STR r0,[r1,#8]
;;;388 //Tx and Rx FIFO Trigger Level:48byte,Tx and Rx FIFO Reset,FIFO on
;;;389 rINTMSK=~(BIT_UART1);
000d60 e3e00880 MVN r0,#0x800000
000d64 e51f1c1c LDR r1,|L1.336|
000d68 e5810008 STR r0,[r1,#8]
;;;390 rINTSUBMSK=~(BIT_SUB_TXD1);
000d6c e3e00010 MVN r0,#0x10
000d70 e0011000 AND r1,r1,r0
000d74 e581001c STR r0,[r1,#0x1c]
;;;391 Delay(500);
000d78 e3a00f7d MOV r0,#0x1f4
000d7c ebfffffe BL Delay
;;;392 rUFCON1=(3<<6)|(2<<4)|(1<<2)|(1<<1)|(0);
000d80 e3a000e6 MOV r0,#0xe6
000d84 e51f1c34 LDR r1,|L1.344|
000d88 e5810008 STR r0,[r1,#8]
;;;393 //Tx and Rx FIFO Trigger Level:12byte,Tx and Rx FIFO Reset,FIFO off
;;;394
;;;395
;;;396 /******* UART1 Rx FIFO test with interrupt ********/
;;;397 rx_dncs=0;
000d8c e3a00000 MOV r0,#0
000d90 e59f116c LDR r1,|L1.3844|
000d94 e1c100b0 STRH r0,[r1,#0] ; rx_dncs
;;;398 rx_point=0;
000d98 e3a00000 MOV r0,#0
000d9c e59f1158 LDR r1,|L1.3836|
000da0 e5810000 STR r0,[r1,#0] ; rx_point
;;;399 rx_isdone=1;
000da4 e3a00001 MOV r0,#1
000da8 e59f1158 LDR r1,|L1.3848|
000dac e5810000 STR r0,[r1,#0] ; rx_isdone
;;;400 rx_filesize=0;
000db0 e3a00000 MOV r0,#0
000db4 e59f1144 LDR r1,|L1.3840|
000db8 e5810000 STR r0,[r1,#0] ; rx_filesize
;;;401 rx_checksum=0;
000dbc e3a00000 MOV r0,#0
000dc0 e59f1144 LDR r1,|L1.3852|
000dc4 e5810000 STR r0,[r1,#0] ; rx_checksum
;;;402 Uart_Printf("[Uart channel 1 Rx FIFO Interrupt Test]\n");
000dc8 e28f0f5e ADR r0,|L1.3912|
000dcc ebfffffe BL _printf
;;;403
;;;404 pISR_UART1=(unsigned)Uart1_RxFifoOrErr;
000dd0 e59f019c LDR r0,|L1.3956|
000dd4 e51f1918 LDR r1,|L1.1220|
000dd8 e5810f7c STR r0,[r1,#0xf7c]
;;;405
;;;406 rULCON1=(0<<6)|(0<<3)|(0<<2)|(3); // Normal,No parity,One stop bit, 8bit
000ddc e3a00003 MOV r0,#3
000de0 e51f1c90 LDR r1,|L1.344|
000de4 e5810000 STR r0,[r1,#0]
;;;407 rUCON1 &= 0x400; // For the PCLK <-> UCLK fuction
000de8 e1c10000 BIC r0,r1,r0
000dec e5900004 LDR r0,[r0,#4]
000df0 e2000e40 AND r0,r0,#0x400
000df4 e5810004 STR r0,[r1,#4]
;;;408 rUCON1 |= (TX_INTTYPE<<9)|(RX_INTTYPE<<8)|(1<<7)|(1<<6)|(0<<5)|(0<<4)|(1<<2)|(1);
000df8 e1a00001 MOV r0,r1
000dfc e5900004 LDR r0,[r0,#4]
000e00 e38000c5 ORR r0,r0,#0xc5
000e04 e5810004 STR r0,[r1,#4]
;;;409 //Clock,Tx:Def,Rx:Def,Rx timeout:o,Rx error int:o,Loop-back:x,Send break:x,Tx:int,Rx:int
;;;410 rUFCON1=(1<<6)|(0<<4)|(1<<2)|(1<<1)|(1);
000e08 e3a00047 MOV r0,#0x47
000e0c e1c11000 BIC r1,r1,r0
000e10 e5810008 STR r0,[r1,#8]
;;;411 //Tx and Rx FIFO Trigger Level:4byte,Tx and Rx FIFO Reset,FIFO on
;;;412
;;;413 // Clear Int Pending and Unmask
;;;414 ClearPending(BIT_UART1);
000e14 e3a00880 MOV r0,#0x800000
000e18 e51f1cd0 LDR r1,|L1.336|
000e1c e5810000 STR r0,[r1,#0]
000e20 e1c10000 BIC r0,r1,r0
000e24 e5900010 LDR r0,[r0,#0x10]
000e28 e5810010 STR r0,[r1,#0x10]
000e2c e1a00001 MOV r0,r1
000e30 e5900010 LDR r0,[r0,#0x10]
;;;415 rINTMSK=~(BIT_UART1);
000e34 e3e00880 MVN r0,#0x800000
000e38 e0011000 AND r1,r1,r0
000e3c e5810008 STR r0,[r1,#8]
;;;416 rSUBSRCPND=(BIT_SUB_RXD1|BIT_SUB_TXD1|BIT_SUB_ERR1);
000e40 e3a00038 MOV r0,#0x38
000e44 e1c11000 BIC r1,r1,r0
000e48 e5810018 STR r0,[r1,#0x18]
;;;417 rINTSUBMSK=~(BIT_SUB_RXD1|BIT_SUB_ERR1);
000e4c e3e00028 MVN r0,#0x28
000e50 e0011000 AND r1,r1,r0
000e54 e581001c STR r0,[r1,#0x1c]
;;;418
;;;419 Uart_Printf("Download the target file[*.bin] by Uart1\n");
000e58 e28f0f46 ADR r0,|L1.3960|
000e5c ebfffffe BL _printf
;;;420
;;;421 while(rx_isdone);
000e60 e1a00000 NOP
|L1.3684|
000e64 e59f009c LDR r0,|L1.3848|
000e68 e5900000 LDR r0,[r0,#0] ; rx_isdone
000e6c e3500000 CMP r0,#0
000e70 1afffffb BNE |L1.3684|
;;;422
;;;423 rINTMSK |= (BIT_UART1);
000e74 e51f0d2c LDR r0,|L1.336|
000e78 e5900008 LDR r0,[r0,#8]
000e7c e3800880 ORR r0,r0,#0x800000
000e80 e51f1d38 LDR r1,|L1.336|
000e84 e5810008 STR r0,[r1,#8]
;;;424 rINTSUBMSK|=(BIT_SUB_RXD1|BIT_SUB_TXD1|BIT_SUB_ERR1);
000e88 e1a00001 MOV r0,r1
000e8c e590001c LDR r0,[r0,#0x1c]
000e90 e3800038 ORR r0,r0,#0x38
000e94 e581001c STR r0,[r1,#0x1c]
;;;425
;;;426 rUFCON1=(3<<6)|(2<<4)|(1<<2)|(1<<1)|(0);
000e98 e3a000e6 MOV r0,#0xe6
000e9c e51f1d4c LDR r1,|L1.344|
000ea0 e5810008 STR r0,[r1,#8]
;;;427 //Tx and Rx FIFO Trigger Level:12byte,Tx and Rx FIFO Reset,FIFO off
;;;428
;;;429 if(rx_dncs==(rx_checksum&0xffff))
000ea4 e59f0060 LDR r0,|L1.3852|
000ea8 e5900000 LDR r0,[r0,#0] ; rx_checksum
000eac e1a00800 MOV r0,r0,LSL #16
000eb0 e1a00820 MOV r0,r0,LSR #16
000eb4 e59f1048 LDR r1,|L1.3844|
000eb8 e1d110b0 LDRH r1,[r1,#0] ; rx_dncs
000ebc e1500001 CMP r0,r1
000ec0 1a000002 BNE |L1.3792|
;;;430 Uart_Printf("\nDownload test O
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -