📄 uart2.txt
字号:
; generated by ARM C Compiler, ADS1.2 [Build 805]
; commandline [-errors .\err\uart2.err -O0 -asm -g+ -cpu ARM920T -fs "-IC:\Program Files\ARM\ADSv1_2\INCLUDE"]
CODE32
AREA ||.text||, CODE, READONLY
Uart2_TxInt PROC
;;;40 void __irq Uart2_TxInt(void)
;;;41 {
|L1.0|
000000 e92d0007 STMFD sp!,{r0-r2}
;;;42 rINTSUBMSK|=(BIT_SUB_RXD2|BIT_SUB_TXD2|BIT_SUB_ERR2); // Just for the safety
000004 e3a0044a MOV r0,#0x4a000000
000008 e590001c LDR r0,[r0,#0x1c]
00000c e3800f70 ORR r0,r0,#0x1c0
000010 e3a0144a MOV r1,#0x4a000000
000014 e581001c STR r0,[r1,#0x1c]
;;;43 if(*uart2TxStr != '\0')
000018 e59f0138 LDR r0,|L1.344|
00001c e5900000 LDR r0,[r0,#0] ; uart2TxStr
000020 e5d00000 LDRB r0,[r0,#0]
000024 e3500000 CMP r0,#0
000028 0a000018 BEQ |L1.144|
;;;44 {
;;;45 WrUTXH2(*uart2TxStr++);
00002c e59f0124 LDR r0,|L1.344|
000030 e5901000 LDR r1,[r0,#0] ; uart2TxStr
000034 e5d10000 LDRB r0,[r1,#0]
000038 e2811001 ADD r1,r1,#1
00003c e59f2114 LDR r2,|L1.344|
000040 e5821000 STR r1,[r2,#0] ; uart2TxStr
000044 e59f1110 LDR r1,|L1.348|
000048 e5c10020 STRB r0,[r1,#0x20]
;;;46 ClearPending(BIT_UART2); // Clear master pending
00004c e3a00c80 MOV r0,#0x8000
000050 e3a0144a MOV r1,#0x4a000000
000054 e5810000 STR r0,[r1,#0]
000058 e3a00c80 MOV r0,#0x8000
00005c e3a0144a MOV r1,#0x4a000000
000060 e5810010 STR r0,[r1,#0x10]
000064 e3a0044a MOV r0,#0x4a000000
000068 e5900010 LDR r0,[r0,#0x10]
;;;47 rSUBSRCPND=(BIT_SUB_TXD2);
00006c e3a00080 MOV r0,#0x80
000070 e3a0144a MOV r1,#0x4a000000
000074 e5810018 STR r0,[r1,#0x18]
;;;48 rINTSUBMSK&=~(BIT_SUB_TXD2); // Unmask sub int
000078 e3a0044a MOV r0,#0x4a000000
00007c e590001c LDR r0,[r0,#0x1c]
000080 e3c00080 BIC r0,r0,#0x80
000084 e3a0144a MOV r1,#0x4a000000
000088 e581001c STR r0,[r1,#0x1c]
00008c ea000012 B |L1.220|
;;;49 }
;;;50 else
;;;51 {
;;;52 isTxInt=0;
|L1.144|
000090 e3a00000 MOV r0,#0
000094 e59f10c4 LDR r1,|L1.352|
000098 e5810000 STR r0,[r1,#0] ; isTxInt
;;;53 ClearPending(BIT_UART2); // Clear master pending
00009c e3a00c80 MOV r0,#0x8000
0000a0 e3a0144a MOV r1,#0x4a000000
0000a4 e5810000 STR r0,[r1,#0]
0000a8 e3a00c80 MOV r0,#0x8000
0000ac e3a0144a MOV r1,#0x4a000000
0000b0 e5810010 STR r0,[r1,#0x10]
0000b4 e3a0044a MOV r0,#0x4a000000
0000b8 e5900010 LDR r0,[r0,#0x10]
;;;54 rSUBSRCPND=(BIT_SUB_TXD2);
0000bc e3a00080 MOV r0,#0x80
0000c0 e3a0144a MOV r1,#0x4a000000
0000c4 e5810018 STR r0,[r1,#0x18]
;;;55 rINTMSK|=(BIT_UART2); // Unmask sub int
0000c8 e3a0044a MOV r0,#0x4a000000
0000cc e5900008 LDR r0,[r0,#8]
0000d0 e3800c80 ORR r0,r0,#0x8000
0000d4 e3a0144a MOV r1,#0x4a000000
0000d8 e5810008 STR r0,[r1,#8]
;;;56 }
;;;57 }
|L1.220|
0000dc e8bd0007 LDMFD sp!,{r0-r2}
0000e0 e25ef004 SUBS pc,lr,#4
ENDP
__sub_Uart2_RxErrInt PROC
;;;161 void __sub_Uart2_RxErrInt(void)
;;;162 {
0000e4 e92d4008 STMFD sp!,{r3,lr}
;;;163 switch(rUERSTAT2)//to clear and check the status of register bits
0000e8 e59f006c LDR r0,|L1.348|
0000ec e5900014 LDR r0,[r0,#0x14]
0000f0 e3500001 CMP r0,#1
0000f4 0a000006 BEQ |L1.276|
0000f8 e3500002 CMP r0,#2
0000fc 0a000007 BEQ |L1.288|
000100 e3500004 CMP r0,#4
000104 0a000008 BEQ |L1.300|
000108 e3500008 CMP r0,#8
00010c 1a00000c BNE |L1.324|
000110 ea000008 B |L1.312|
;;;164 {
;;;165 case 1:
;;;166 Uart_Printf("Overrun error\n");
|L1.276|
000114 e28f0048 ADR r0,|L1.356|
000118 ebfffffe BL Uart_Printf
;;;167 break;
00011c ea000009 B |L1.328|
;;;168 case 2:
;;;169 Uart_Printf("Parity error\n");
|L1.288|
000120 e28f004c ADR r0,|L1.372|
000124 ebfffffe BL Uart_Printf
;;;170 break;
000128 ea000006 B |L1.328|
;;;171 case 4:
;;;172 Uart_Printf("Frame error\n");
|L1.300|
00012c e28f0050 ADR r0,|L1.388|
000130 ebfffffe BL Uart_Printf
;;;173 break;
000134 ea000003 B |L1.328|
;;;174 case 8:
;;;175 Uart_Printf("Breake detect\n");
|L1.312|
000138 e28f0054 ADR r0,|L1.404|
00013c ebfffffe BL Uart_Printf
;;;176 break;
000140 ea000000 B |L1.328|
;;;177 default :
;;;178 break;
|L1.324|
000144 e1a00000 NOP
;;;179 }
;;;180 isRxInt=0;
|L1.328|
000148 e3a00000 MOV r0,#0
00014c e59f1050 LDR r1,|L1.420|
000150 e5810000 STR r0,[r1,#0] ; isRxInt
;;;181 }
000154 e8bd8008 LDMFD sp!,{r3,pc}
|L1.344|
000158 00000000 DCD ||.bss$2||
|L1.348|
00015c 50008000 DCD 0x50008000
|L1.352|
000160 00000000 DCD isTxInt
|L1.356|
000164 7265764f DCB "Over"
000168 206e7572 DCB "run "
00016c 6f727265 DCB "erro"
000170 00000a72 DCB "r\n\0\0"
|L1.372|
000174 69726150 DCB "Pari"
000178 65207974 DCB "ty e"
00017c 726f7272 DCB "rror"
|L1.384|
000180 0000000a DCB "\n\0\0\0"
|L1.388|
000184 6d617246 DCB "Fram"
000188 72652065 DCB "e er"
00018c 0a726f72 DCB "ror\n"
000190 00000000 DCB "\0\0\0\0"
|L1.404|
000194 61657242 DCB "Brea"
000198 6420656b DCB "ke d"
00019c 63657465 DCB "etec"
0001a0 00000a74 DCB "t\n\0\0"
|L1.420|
0001a4 00000000 DCD isRxInt
ENDP
__sub_Uart2_RxInt PROC
;;;128 void __sub_Uart2_RxInt(void)
;;;129 {
0001a8 e92d4008 STMFD sp!,{r3,lr}
;;;130 if(RdURXH2()!='\r')
0001ac e51f0058 LDR r0,|L1.348|
0001b0 e5d00024 LDRB r0,[r0,#0x24]
0001b4 e350000d CMP r0,#0xd
0001b8 0a00000d BEQ |L1.500|
;;;131 {
;;;132 Uart_Printf("%c",RdURXH2());
0001bc e51f0068 LDR r0,|L1.348|
0001c0 e5d00024 LDRB r0,[r0,#0x24]
0001c4 e1a01000 MOV r1,r0
0001c8 e28f004c ADR r0,|L1.540|
0001cc ebfffffe BL Uart_Printf
;;;133 *uart2RxStr++ =(char) RdURXH2();
0001d0 e51f007c LDR r0,|L1.348|
0001d4 e5d01024 LDRB r1,[r0,#0x24]
0001d8 e59f0040 LDR r0,|L1.544|
0001dc e5900000 LDR r0,[r0,#0] ; uart2RxStr
0001e0 e5c01000 STRB r1,[r0,#0]
0001e4 e2800001 ADD r0,r0,#1
0001e8 e59f1030 LDR r1,|L1.544|
0001ec e5810000 STR r0,[r1,#0] ; uart2RxStr
0001f0 ea000008 B |L1.536|
;;;134 }
;;;135 else
;;;136 {
;;;137 isRxInt=0;
|L1.500|
0001f4 e3a00000 MOV r0,#0
0001f8 e51f105c LDR r1,|L1.420|
0001fc e5810000 STR r0,[r1,#0] ; isRxInt
;;;138 *uart2RxStr='\0';
000200 e3a00000 MOV r0,#0
000204 e59f1014 LDR r1,|L1.544|
000208 e5911000 LDR r1,[r1,#0] ; uart2RxStr
00020c e5c10000 STRB r0,[r1,#0]
;;;139 Uart_Printf("\n");
000210 e24f0098 ADR r0,|L1.384|
000214 ebfffffe BL Uart_Printf
;;;140 }
;;;141 }
|L1.536|
000218 e8bd8008 LDMFD sp!,{r3,pc}
|L1.540|
00021c 00006325 DCB "%c\0\0"
|L1.544|
000220 00000004 DCD ||.bss$2|| + 4
ENDP
Uart2_RxIntOrErr PROC
;;;59 void __irq Uart2_RxIntOrErr(void)
;;;60 {
000224 e92d500f STMFD sp!,{r0-r3,r12,lr}
;;;61 rINTSUBMSK|=(BIT_SUB_RXD2|BIT_SUB_TXD2|BIT_SUB_ERR2);
000228 e3a0044a MOV r0,#0x4a000000
00022c e590001c LDR r0,[r0,#0x1c]
000230 e3800f70 ORR r0,r0,#0x1c0
000234 e3a0144a MOV r1,#0x4a000000
000238 e581001c STR r0,[r1,#0x1c]
;;;62 if(rSUBSRCPND&BIT_SUB_RXD2) __sub_Uart2_RxInt();
00023c e3a0044a MOV r0,#0x4a000000
000240 e5900018 LDR r0,[r0,#0x18]
000244 e3100040 TST r0,#0x40
000248 0a000001 BEQ |L1.596|
00024c ebfffffe BL __sub_Uart2_RxInt
000250 ea000000 B |L1.600|
;;;63 else __sub_Uart2_RxErrInt();
|L1.596|
000254 ebfffffe BL __sub_Uart2_RxErrInt
;;;64
;;;65 ClearPending(BIT_UART2);
|L1.600|
000258 e3a00c80 MOV r0,#0x8000
00025c e3a0144a MOV r1,#0x4a000000
000260 e5810000 STR r0,[r1,#0]
000264 e3a00c80 MOV r0,#0x8000
000268 e3a0144a MOV r1,#0x4a000000
00026c e5810010 STR r0,[r1,#0x10]
000270 e3a0044a MOV r0,#0x4a000000
000274 e5900010 LDR r0,[r0,#0x10]
;;;66 rSUBSRCPND=(BIT_SUB_RXD2|BIT_SUB_ERR2); // Clear Sub int pending
000278 e3a00f50 MOV r0,#0x140
00027c e3a0144a MOV r1,#0x4a000000
000280 e5810018 STR r0,[r1,#0x18]
;;;67 rINTSUBMSK&=~(BIT_SUB_RXD2|BIT_SUB_ERR2);
000284 e3a0044a MOV r0,#0x4a000000
000288 e590001c LDR r0,[r0,#0x1c]
00028c e3c00f50 BIC r0,r0,#0x140
000290 e3a0144a MOV r1,#0x4a000000
000294 e581001c STR r0,[r1,#0x1c]
;;;68 }
000298 e8bd500f LDMFD sp!,{r0-r3,r12,lr}
00029c e25ef004 SUBS pc,lr,#4
ENDP
Uart2_TxDmaDone PROC
;;;70 void __irq Uart2_TxDmaDone(void)
;;;71 {
0002a0 e92d0003 STMFD sp!,{r0,r1}
;;;72 rDMASKTRIG3=0x0; // Stop Dma3
0002a4 e3a00000 MOV r0,#0
0002a8 e3a0144b MOV r1,#0x4b000000
0002ac e58100e0 STR r0,[r1,#0xe0]
;;;73 isDone=0;
0002b0 e3a00000 MOV r0,#0
0002b4 e59f1124 LDR r1,|L1.992|
0002b8 e5810000 STR r0,[r1,#0] ; isDone
;;;74 rINTMSK |= BIT_DMA3;
0002bc e3a0044a MOV r0,#0x4a000000
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -