📄 uart1.txt
字号:
0008b4 e59f00f8 LDR r0,|L1.2484|
0008b8 e1c11000 BIC r1,r1,r0
0008bc e5810018 STR r0,[r1,#0x18]
;;;281 rINTSUBMSK=~(BIT_SUB_ERR1|BIT_SUB_DMA1);
0008c0 e59f00f0 LDR r0,|L1.2488|
0008c4 e0011000 AND r1,r1,r0
0008c8 e581001c STR r0,[r1,#0x1c]
;;;282 rDMASKTRIG1=(0<<2)|(1<<1)|(0); //no-stop, DMA1 channel on, no-SW trigger
0008cc e3a00002 MOV r0,#2
0008d0 e28119c0 ADD r1,r1,#0x300000
0008d4 e5810020 STR r0,[r1,#0x20]
;;;283 // end junon
;;;284
;;;285 while(isDone);
0008d8 e1a00000 NOP
|L1.2268|
0008dc e51f024c LDR r0,|L1.1688|
0008e0 e5900000 LDR r0,[r0,#0] ; isDone
0008e4 e3500000 CMP r0,#0
0008e8 1afffffb BNE |L1.2268|
;;;286
;;;287 Uart_Printf("%s\n",uart1RxStr);
0008ec e51f0790 LDR r0,|L1.356|
0008f0 e5901000 LDR r1,[r0,#0] ; uart1RxStr
0008f4 e24f0ff9 ADR r0,|L1.1304|
0008f8 ebfffffe BL _printf
;;;288
;;;289
;;;290 //----------------------------------------------------------------------------------------->
;;;291 Uart_Printf("\nConnect PC[COM1 or COM2] and UART0 of SMDK24A0 with a serial cable!!! \n");
0008fc e51f03e8 LDR r0,|L1.1308|
000900 ebfffffe BL _printf
;;;292 Uart_Printf("Then, press any key........\n");
000904 e59f00b0 LDR r0,|L1.2492|
000908 ebfffffe BL _printf
;;;293 Uart_Select(0);
00090c e3a00000 MOV r0,#0
000910 ebfffffe BL Uart_Select
;;;294 Uart_Getch();
000914 ebfffffe BL Uart_Getch
;;;295 //--------------------------->
;;;296
;;;297
;;;298 Uart_Port_Return();
000918 ebfffffe BL Uart_Port_Return
;;;299 }
00091c e8bd8008 LDMFD sp!,{r3,pc}
|L1.2336|
000920 00000130 DCD ||.constdata$1|| + 304
|L1.2340|
000924 61555b0a DCB "\n[Ua"
000928 63207472 DCB "rt c"
00092c 6e6e6168 DCB "hann"
000930 31206c65 DCB "el 1"
000934 414d4420 DCB " DMA"
000938 78542031 DCB "1 Tx"
00093c 73655420 DCB " Tes"
000940 000a5d74 DCB "t]\n\0"
|L1.2372|
000944 00000000 DCD Uart1_TxDmaDone
|L1.2376|
000948 44404020 DCD 0x44404020
|L1.2380|
00094c 61555b0a DCB "\n[Ua"
000950 63207472 DCB "rt c"
000954 6e6e6168 DCB "hann"
000958 31206c65 DCB "el 1"
00095c 414d4420 DCB " DMA"
000960 78522031 DCB "1 Rx"
000964 73655420 DCB " Tes"
000968 000a5d74 DCB "t]\n\0"
|L1.2412|
00096c 65707954 DCB "Type"
000970 796e6120 DCB " any"
000974 76696620 DCB " fiv"
000978 656b2065 DCB "e ke"
00097c 21217379 DCB "ys!!"
000980 00000a21 DCB "!\n\0\0"
|L1.2436|
000984 6e656854 DCB "Then"
000988 756f7920 DCB " you"
00098c 6c697720 DCB " wil"
000990 6573206c DCB "l se"
000994 68772065 DCB "e wh"
000998 79207461 DCB "at y"
00099c 7420756f DCB "ou t"
0009a0 64657079 DCB "yped"
0009a4 00000a2e DCB ".\n\0\0"
|L1.2472|
0009a8 00000000 DCD Uart1_RxDmaDone
|L1.2476|
0009ac 00000000 DCD Uart1_RxDmaOrErr
|L1.2480|
0009b0 a1c00005 DCD 0xa1c00005
|L1.2484|
0009b4 04000038 DCD 0x04000038
|L1.2488|
0009b8 fbffffdf DCD 0xfbffffdf
|L1.2492|
0009bc 00000000 DCD |L1.1184|
ENDP
Uart1_TxFifo PROC
;;;302 void __irq Uart1_TxFifo(void)
;;;303 {
0009c0 e92d0007 STMFD sp!,{r0-r2}
;;;304 rINTSUBMSK|=(BIT_SUB_RXD1|BIT_SUB_TXD1|BIT_SUB_ERR1); // Just for the safety
0009c4 e51f087c LDR r0,|L1.336|
0009c8 e590001c LDR r0,[r0,#0x1c]
0009cc e3800038 ORR r0,r0,#0x38
0009d0 e51f1888 LDR r1,|L1.336|
0009d4 e581001c STR r0,[r1,#0x1c]
;;;305 while (!(rUFSTAT1 & 0x4000) && (*uart1TxStr != '\0')) //until tx fifo full or end of string
0009d8 e1a00000 NOP
|L1.2524|
0009dc e51f088c LDR r0,|L1.344|
0009e0 e5900018 LDR r0,[r0,#0x18]
0009e4 e3100c40 TST r0,#0x4000
0009e8 1a00000d BNE |L1.2596|
0009ec e51f08a0 LDR r0,|L1.340|
0009f0 e5900000 LDR r0,[r0,#0] ; uart1TxStr
0009f4 e5d00000 LDRB r0,[r0,#0]
0009f8 e3500000 CMP r0,#0
0009fc 0a000008 BEQ |L1.2596|
;;;306 WrUTXH1(*uart1TxStr++);
000a00 e51f08b4 LDR r0,|L1.340|
000a04 e5901000 LDR r1,[r0,#0] ; uart1TxStr
000a08 e5d10000 LDRB r0,[r1,#0]
000a0c e2811001 ADD r1,r1,#1
000a10 e51f28c4 LDR r2,|L1.340|
000a14 e5821000 STR r1,[r2,#0] ; uart1TxStr
000a18 e51f18c8 LDR r1,|L1.344|
000a1c e5c10020 STRB r0,[r1,#0x20]
000a20 eaffffed B |L1.2524|
;;;307
;;;308 if(*uart1TxStr == '\0')
|L1.2596|
000a24 e51f08d8 LDR r0,|L1.340|
000a28 e5900000 LDR r0,[r0,#0] ; uart1TxStr
000a2c e5d00000 LDRB r0,[r0,#0]
000a30 e3500000 CMP r0,#0
000a34 1a000010 BNE |L1.2684|
;;;309 {
;;;310 rINTMSK|=BIT_UART1;
000a38 e51f08f0 LDR r0,|L1.336|
000a3c e5900008 LDR r0,[r0,#8]
000a40 e3800880 ORR r0,r0,#0x800000
000a44 e51f18fc LDR r1,|L1.336|
000a48 e5810008 STR r0,[r1,#8]
;;;311 rSUBSRCPND=BIT_SUB_TXD1; // Clear Sub int pending
000a4c e3a00010 MOV r0,#0x10
000a50 e1c11000 BIC r1,r1,r0
000a54 e5810018 STR r0,[r1,#0x18]
;;;312 ClearPending(BIT_UART1); // Clear master pending
000a58 e3a00880 MOV r0,#0x800000
000a5c e1c11000 BIC r1,r1,r0
000a60 e5810000 STR r0,[r1,#0]
000a64 e1c10000 BIC r0,r1,r0
000a68 e5900010 LDR r0,[r0,#0x10]
000a6c e5810010 STR r0,[r1,#0x10]
000a70 e1a00001 MOV r0,r1
000a74 e5900010 LDR r0,[r0,#0x10]
000a78 ea00000e B |L1.2744|
;;;313 }
;;;314 else
;;;315 {
;;;316 ClearPending(BIT_UART1); // Clear master pending
|L1.2684|
000a7c e3a00880 MOV r0,#0x800000
000a80 e51f1938 LDR r1,|L1.336|
000a84 e5810000 STR r0,[r1,#0]
000a88 e1c10000 BIC r0,r1,r0
000a8c e5900010 LDR r0,[r0,#0x10]
000a90 e5810010 STR r0,[r1,#0x10]
000a94 e1a00001 MOV r0,r1
000a98 e5900010 LDR r0,[r0,#0x10]
;;;317 rSUBSRCPND=BIT_SUB_TXD1; // Clear Sub int pending
000a9c e3a00010 MOV r0,#0x10
000aa0 e1c11000 BIC r1,r1,r0
000aa4 e5810018 STR r0,[r1,#0x18]
;;;318 rINTSUBMSK&=~(BIT_SUB_TXD1); // Unmask sub int
000aa8 e1c10000 BIC r0,r1,r0
000aac e590001c LDR r0,[r0,#0x1c]
000ab0 e3c00010 BIC r0,r0,#0x10
000ab4 e581001c STR r0,[r1,#0x1c]
;;;319 }
;;;320 }
|L1.2744|
000ab8 e8bd0007 LDMFD sp!,{r0-r2}
000abc e25ef004 SUBS pc,lr,#4
ENDP
__sub_Uart1_RxFifo PROC
;;;332 void __sub_Uart1_RxFifo(void)
;;;333 {
000ac0 e1a00000 NOP
;;;334 while((rUFSTAT1&0x40)||(rUFSTAT1&0x3f)) //During the Rx FIFO is not empty
|L1.2756|
000ac4 e51f0974 LDR r0,|L1.344|
000ac8 e5900018 LDR r0,[r0,#0x18]
000acc e3100040 TST r0,#0x40
000ad0 1a000003 BNE |L1.2788|
000ad4 e51f0984 LDR r0,|L1.344|
000ad8 e5900018 LDR r0,[r0,#0x18]
000adc e310003f TST r0,#0x3f
000ae0 0a00003d BEQ |L1.3036|
;;;335 {
;;;336 rx_point++;
|L1.2788|
000ae4 e59f0410 LDR r0,|L1.3836|
000ae8 e5900000 LDR r0,[r0,#0] ; rx_point
000aec e2800001 ADD r0,r0,#1
000af0 e59f1404 LDR r1,|L1.3836|
000af4 e5810000 STR r0,[r1,#0] ; rx_point
;;;337 if(rx_point<5)
000af8 e59f03fc LDR r0,|L1.3836|
000afc e5900000 LDR r0,[r0,#0] ; rx_point
000b00 e3500005 CMP r0,#5
000b04 2a00000c BCS |L1.2876|
;;;338 rx_filesize |= (RdURXH1()<<(8*(rx_point-1))); // First 4-bytes mean file size
000b08 e51f09b8 LDR r0,|L1.344|
000b0c e5d00024 LDRB r0,[r0,#0x24]
000b10 e59f13e4 LDR r1,|L1.3836|
000b14 e5911000 LDR r1,[r1,#0] ; rx_point
000b18 e3e02007 MVN r2,#7
000b1c e0821181 ADD r1,r2,r1,LSL #3
000b20 e1a00110 MOV r0,r0,LSL r1
000b24 e59f13d4 LDR r1,|L1.3840|
000b28 e5911000 LDR r1,[r1,#0] ; rx_filesize
000b2c e1800001 ORR r0,r0,r1
000b30 e59f13c8 LDR r1,|L1.3840|
000b34 e5810000 STR r0,[r1,#0] ; rx_filesize
000b38 ea000026 B |L1.3032|
;;;339 else if(rx_point>(rx_filesize-2))
|L1.2876|
000b3c e59f03b8 LDR r0,|L1.3836|
000b40 e5900000 LDR r0,[r0,#0] ; rx_point
000b44 e59f13b4 LDR r1,|L1.3840|
000b48 e5911000 LDR r1,[r1,#0] ; rx_filesize
000b4c e2411002 SUB r1,r1,#2
000b50 e1500001 CMP r0,r1
000b54 9a000018 BLS |L1.3004|
;;;340 {
;;;341 rx_dncs |= (RdURXH1()<<(8*(1-(rx_filesize-rx_point)))); //Last 2-bytes mean checksum.
000b58 e51f0a08 LDR r0,|L1.344|
000b5c e5d00024 LDRB r0,[r0,#0x24]
000b60 e59f1398 LDR r1,|L1.3840|
000b64 e5911000 LDR r1,[r1,#0] ; rx_filesize
000b68 e59f238c LDR r2,|L1.3836|
000b6c e5922000 LDR r2,[r2,#0] ; rx_point
000b70 e0411002 SUB r1,r1,r2
000b74 e2611001 RSB r1,r1,#1
000b78 e1a01181 MOV r1,r1,LSL #3
000b7c e1a00110 MOV r0,r0,LSL r1
000b80 e59f137c LDR r1,|L1.3844|
000b84 e1d110b0 LDRH r1,[r1,#0] ; rx_dncs
000b88 e1800001 ORR r0,r0,r1
000b8c e59f1370 LDR r1,|L1.3844|
000b90 e1c100b0 STRH r0,[r1,#0] ; rx_dncs
;;;342 if(rx_point==rx_filesize) rx_isdone=0;
000b94 e59f0360 LDR r0,|L1.3836|
000b98 e5900000 LDR r0,[r0,#0] ; rx_point
000b9c e59f135c LDR r1,|L1.3840|
000ba0 e5911000 LDR r1,[r1,#0] ; rx_filesize
000ba4 e1500001 CMP r0,r1
000ba8 1a00000a BNE |L1.3032|
000bac e3a00000 MOV r0,#0
000bb0 e59f1350 LDR r1,|L1.3848|
000bb4 e5810000 STR r0,[r1,#0] ; rx_isdone
000bb8 ea000006 B |L1.3032|
;;;343 }
;;;344 else
;;;345 rx_checksum+=RdURXH1();
|L1.3004|
000bbc e51f0a6c LDR r0,|L1.344|
000bc0 e5d00024 LDRB r0,[r0,#0x24]
000bc4 e59f1340 LDR r1,|L1.3852|
000bc8 e5911000 LDR r1,[r1,#0] ; rx_checksum
000bcc e0800001 ADD r0,r0,r1
000bd0 e59f1334 LDR r1,|L1.3852|
000bd4 e5810000 STR r0,[r1,#0] ; rx_checksum
;;;346 }
|L1.3032|
000bd8 eaffffb9 B |L1.2756|
;;;347 }
|L1.3036|
000bdc e12fff1e BX lr
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -