⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uart2.txt

📁 SMDK2442所有设备的驱动测试程序。运行monitor程序
💻 TXT
📖 第 1 页 / 共 5 页
字号:
; 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 + -