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

📄 2442lib.txt

📁 SMDK2442所有设备的驱动测试程序。运行monitor程序
💻 TXT
📖 第 1 页 / 共 5 页
字号:
000200  ea00000e          B        |L1.576|
;;;218              
;;;219        else if(ch==1)
                  |L1.516|
000204  e3500001          CMP      r0,#1
000208  1a000005          BNE      |L1.548|
;;;220            while(!(rUTRSTAT1 & 0x4)); //Wait until tx shifter is empty.
00020c  e1a00000          NOP      
                  |L1.528|
000210  e59f126c          LDR      r1,|L1.1156|
000214  e5911010          LDR      r1,[r1,#0x10]
000218  e3110004          TST      r1,#4
00021c  0afffffb          BEQ      |L1.528|
000220  ea000006          B        |L1.576|
;;;221            
;;;222        else if(ch==2)
                  |L1.548|
000224  e3500002          CMP      r0,#2
000228  1a000004          BNE      |L1.576|
;;;223            while(!(rUTRSTAT2 & 0x4)); //Wait until tx shifter is empty.
00022c  e1a00000          NOP      
                  |L1.560|
000230  e59f1250          LDR      r1,|L1.1160|
000234  e5911010          LDR      r1,[r1,#0x10]
000238  e3110004          TST      r1,#4
00023c  0afffffb          BEQ      |L1.560|
;;;224    }
                  |L1.576|
000240  e1a0f00e          MOV      pc,lr
                          ENDP

                  Uart_Init PROC
;;;176    void Uart_Init(int pclk,int baud)
;;;177    {
000244  e92d4030          STMFD    sp!,{r4,r5,lr}
000248  e24dd02c          SUB      sp,sp,#0x2c
00024c  e1a04000          MOV      r4,r0
000250  e1a05001          MOV      r5,r1
;;;178        int i;
;;;179        if(pclk == 0)
000254  e3540000          CMP      r4,#0
000258  1a000000          BNE      |L1.608|
;;;180        pclk    = PCLK;
00025c  e59f4228          LDR      r4,|L1.1164|
;;;181        rUFCON0 = 0x0;   //UART channel 0 FIFO control register, FIFO disable
                  |L1.608|
000260  e3a00000          MOV      r0,#0
000264  e3a01450          MOV      r1,#0x50000000
000268  e5810008          STR      r0,[r1,#8]
;;;182        rUFCON1 = 0x0;   //UART channel 1 FIFO control register, FIFO disable
00026c  e3a00000          MOV      r0,#0
000270  e2811c40          ADD      r1,r1,#0x4000
000274  e5810008          STR      r0,[r1,#8]
;;;183        rUFCON2 = 0x0;   //UART channel 2 FIFO control register, FIFO disable
000278  e3a00000          MOV      r0,#0
00027c  e2811c40          ADD      r1,r1,#0x4000
000280  e5810008          STR      r0,[r1,#8]
;;;184        rUMCON0 = 0x0;   //UART chaneel 0 MODEM control register, AFC disable
000284  e3a00000          MOV      r0,#0
000288  e3a01450          MOV      r1,#0x50000000
00028c  e581000c          STR      r0,[r1,#0xc]
;;;185        rUMCON1 = 0x0;   //UART chaneel 1 MODEM control register, AFC disable
000290  e3a00000          MOV      r0,#0
000294  e2811c40          ADD      r1,r1,#0x4000
000298  e581000c          STR      r0,[r1,#0xc]
;;;186    //UART0
;;;187        rULCON0 = 0x3;   //Line control register : Normal,No parity,1 stop,8 bits
00029c  e3a00003          MOV      r0,#3
0002a0  e3a01450          MOV      r1,#0x50000000
0002a4  e5810000          STR      r0,[r1,#0]
;;;188         //    [10]       [9]     [8]        [7]        [6]      [5]         [4]           [3:2]        [1:0]
;;;189         // Clock Sel,  Tx Int,  Rx Int, Rx Time Out, Rx err, Loop-back, Send break,  Transmit Mode, Receive Mode
;;;190         //     0          1       0    ,     0          1        0           0     ,       01          01
;;;191         //   PCLK       Level    Pulse    Disable    Generate  Normal      Normal        Interrupt or Polling
;;;192        rUCON0  = 0x245;   // Control register
0002a8  e59f01e0          LDR      r0,|L1.1168|
0002ac  e3a01450          MOV      r1,#0x50000000
0002b0  e5810004          STR      r0,[r1,#4]
;;;193        rUBRDIV0=( (int)(pclk/16./baud+0.5) -1 );   //Baud rate divisior register 0
0002b4  e1a00004          MOV      r0,r4
0002b8  ebfffffe          BL       _dflt
0002bc  e98d0003          STMIB    sp,{r0,r1}
0002c0  e28f0f73          ADR      r0,|L1.1172|
0002c4  e890000c          LDMIA    r0,{r2,r3}
0002c8  e59d0004          LDR      r0,[sp,#4]
0002cc  ebfffffe          BL       _dmul
0002d0  e58d0014          STR      r0,[sp,#0x14]
0002d4  e58d1018          STR      r1,[sp,#0x18]
0002d8  e1a00005          MOV      r0,r5
0002dc  ebfffffe          BL       _dflt
0002e0  e58d000c          STR      r0,[sp,#0xc]
0002e4  e58d1010          STR      r1,[sp,#0x10]
0002e8  e59d2014          LDR      r2,[sp,#0x14]
0002ec  e59d3018          LDR      r3,[sp,#0x18]
0002f0  ebfffffe          BL       _drdiv
0002f4  e58d001c          STR      r0,[sp,#0x1c]
0002f8  e58d1020          STR      r1,[sp,#0x20]
0002fc  e28f0f66          ADR      r0,|L1.1180|
000300  e890000c          LDMIA    r0,{r2,r3}
000304  e59d001c          LDR      r0,[sp,#0x1c]
000308  ebfffffe          BL       _dadd
00030c  e58d0024          STR      r0,[sp,#0x24]
000310  e58d1028          STR      r1,[sp,#0x28]
000314  ebfffffe          BL       _dfix
000318  e2400001          SUB      r0,r0,#1
00031c  e3a01450          MOV      r1,#0x50000000
000320  e5810028          STR      r0,[r1,#0x28]
;;;194    //UART1
;;;195        rULCON1 = 0x3;
000324  e3a00003          MOV      r0,#3
000328  e2811c40          ADD      r1,r1,#0x4000
00032c  e5810000          STR      r0,[r1,#0]
;;;196        rUCON1  = 0x245;
000330  e59f0158          LDR      r0,|L1.1168|
000334  e1c11000          BIC      r1,r1,r0
000338  e5810004          STR      r0,[r1,#4]
;;;197        rUBRDIV1=( (int)(pclk/16./baud+0.5) -1 );
00033c  e1a00004          MOV      r0,r4
000340  ebfffffe          BL       _dflt
000344  e98d0003          STMIB    sp,{r0,r1}
000348  e28f0f51          ADR      r0,|L1.1172|
00034c  e890000c          LDMIA    r0,{r2,r3}
000350  e59d0004          LDR      r0,[sp,#4]
000354  ebfffffe          BL       _dmul
000358  e58d0014          STR      r0,[sp,#0x14]
00035c  e58d1018          STR      r1,[sp,#0x18]
000360  e1a00005          MOV      r0,r5
000364  ebfffffe          BL       _dflt
000368  e58d000c          STR      r0,[sp,#0xc]
00036c  e58d1010          STR      r1,[sp,#0x10]
000370  e59d2014          LDR      r2,[sp,#0x14]
000374  e59d3018          LDR      r3,[sp,#0x18]
000378  ebfffffe          BL       _drdiv
00037c  e58d001c          STR      r0,[sp,#0x1c]
000380  e58d1020          STR      r1,[sp,#0x20]
000384  e28f0f44          ADR      r0,|L1.1180|
000388  e890000c          LDMIA    r0,{r2,r3}
00038c  e59d001c          LDR      r0,[sp,#0x1c]
000390  ebfffffe          BL       _dadd
000394  e58d0024          STR      r0,[sp,#0x24]
000398  e58d1028          STR      r1,[sp,#0x28]
00039c  ebfffffe          BL       _dfix
0003a0  e2400001          SUB      r0,r0,#1
0003a4  e59f10d8          LDR      r1,|L1.1156|
0003a8  e5810028          STR      r0,[r1,#0x28]
;;;198    //UART2
;;;199        rULCON2 = 0x3;
0003ac  e3a00003          MOV      r0,#3
0003b0  e0211700          EOR      r1,r1,r0,LSL #14
0003b4  e5810000          STR      r0,[r1,#0]
;;;200        rUCON2  = 0x245;
0003b8  e59f00d0          LDR      r0,|L1.1168|
0003bc  e1c11000          BIC      r1,r1,r0
0003c0  e5810004          STR      r0,[r1,#4]
;;;201        rUBRDIV2=( (int)(pclk/16./baud+0.5) -1 );    
0003c4  e1a00004          MOV      r0,r4
0003c8  ebfffffe          BL       _dflt
0003cc  e98d0003          STMIB    sp,{r0,r1}
0003d0  e28f00bc          ADR      r0,|L1.1172|
0003d4  e890000c          LDMIA    r0,{r2,r3}
0003d8  e59d0004          LDR      r0,[sp,#4]
0003dc  ebfffffe          BL       _dmul
0003e0  e58d0014          STR      r0,[sp,#0x14]
0003e4  e58d1018          STR      r1,[sp,#0x18]
0003e8  e1a00005          MOV      r0,r5
0003ec  ebfffffe          BL       _dflt
0003f0  e58d000c          STR      r0,[sp,#0xc]
0003f4  e58d1010          STR      r1,[sp,#0x10]
0003f8  e59d2014          LDR      r2,[sp,#0x14]
0003fc  e59d3018          LDR      r3,[sp,#0x18]
000400  ebfffffe          BL       _drdiv
000404  e58d001c          STR      r0,[sp,#0x1c]
000408  e58d1020          STR      r1,[sp,#0x20]
00040c  e28f0088          ADR      r0,|L1.1180|
000410  e890000c          LDMIA    r0,{r2,r3}
000414  e59d001c          LDR      r0,[sp,#0x1c]
000418  ebfffffe          BL       _dadd
00041c  e58d0024          STR      r0,[sp,#0x24]
000420  e58d1028          STR      r1,[sp,#0x28]
000424  ebfffffe          BL       _dfix
000428  e2400001          SUB      r0,r0,#1
00042c  e59f1054          LDR      r1,|L1.1160|
000430  e5810028          STR      r0,[r1,#0x28]
;;;202    
;;;203    	Uart_TxEmpty(whichUart);
000434  e59f0068          LDR      r0,|L1.1188|
000438  e5900000          LDR      r0,[r0,#0]  ; whichUart
00043c  ebfffffe          BL       Uart_TxEmpty
;;;204        //for(i=0;i<100;i++);
;;;205    }
000440  e28dd02c          ADD      sp,sp,#0x2c
000444  e8bd8030          LDMFD    sp!,{r4,r5,pc}
                  |L1.1096|
000448  00000000          DCD      ||.bss$2||
                  |L1.1100|
00044c  00003010          DCD      0x00003010
                  |L1.1104|
000450  00003030          DCD      0x00003030
                  |L1.1108|
000454  00f42400          DCD      0x00f42400
                  |L1.1112|
000458  007fffff          DCD      0x007fffff
                  |L1.1116|
00045c  00155555          DCD      0x00155555
                  |L1.1120|
000460  000007ff          DCD      0x000007ff
                  |L1.1124|
000464  aaaaaaaa          DCD      0xaaaaaaaa
                  |L1.1128|
000468  0000ffff          DCD      0x0000ffff
                  |L1.1132|
00046c  000055aa          DCD      0x000055aa
                  |L1.1136|
000470  ff95ffba          DCD      0xff95ffba
                  |L1.1140|
000474  002afaaa          DCD      0x002afaaa
                  |L1.1144|
000478  0016aaaa          DCD      0x0016aaaa
                  |L1.1148|
00047c  00001fff          DCD      0x00001fff
                  |L1.1152|
000480  22222222          DCD      0x22222222
                  |L1.1156|
000484  50004000          DCD      0x50004000
                  |L1.1160|
000488  50008000          DCD      0x50008000
                  |L1.1164|
00048c  02f1a980          DCD      0x02f1a980
                  |L1.1168|
000490  00000245          DCD      0x00000245
                  |L1.1172|
000494  00000000          DCFD     0x3fb0000000000000
000498  3fb00000  
                  |L1.1180|
00049c  00000000          DCFD     0x3fe0000000000000 ; 0.5
0004a0  3fe00000  
                  |L1.1188|
0004a4  00000004          DCD      ||.data$0|| + 4
                          ENDP

                  Uart_Select PROC
;;;208    void Uart_Select(int ch)
;;;209    {
0004a8  e51f100c          LDR      r1,|L1.1188|
;;;210        whichUart = ch;
0004ac  e5810000          STR      r0,[r1,#0]  ; whichUart
;;;211    }
0004b0  e1a0f00e          MOV      pc,lr
                          ENDP

                  Uart_Getch PROC
;;;227    char Uart_Getch(void)
;;;228    {
0004b4  e51f0018          LDR      r0,|L1.1188|
;;;229        if(whichUart==0)
0004b8  e5900000          LDR      r0,[r0,#0]  ; whichUart
0004bc  e3500000          CMP      r0,#0
0004c0  1a000007          BNE      |L1.1252|
;;;230        {       
;;;231            while(!(rUTRSTAT0 & 0x1)); //Receive data ready
0004c4  e1a00000          NOP      
                  |L1.1224|
0004c8  e3a00450          MOV      r0,#0x50000000
0004cc  e5900010          LDR      r0,[r0,#0x10]
0004d0  e3100001          TST      r0,#1
0004d4  0afffffb          BEQ      |L1.1224|
;;;232            return RdURXH0();
0004d8  e3a00450          MOV      r0,#0x50000000
0004dc  e5d00024          LDRB     r0,[r0,#0x24]
;;;233        }
;;;234        else if(whichUart==1)
;;;235        {       
;;;236            while(!(rUTRSTAT1 & 0x1)); //Receive data ready
;;;237            return RdURXH1();
;;;238        }
;;;239        else if(whichUart==2)
;;;240        {
;;;241            while(!(rUTRSTAT2 & 0x1)); //Receive data ready
;;;242            return RdURXH2();
;;;243        }
;;;244    }
                  |L1.1248|
0004e0  e1a0f00e          MOV      pc,lr
                  |L1.1252|
0004e4  e51f0048          LDR      r0,|L1.1188|          ;234
0004e8  e5900000          LDR      r0,[r0,#0]            ;234  ; whichUart
0004ec  e3500001          CMP      r0,#1                 ;234
0004f0  1a000007          BNE      |L1.1300|             ;234
0004f4  e1a00000          NOP                            ;236
                  |L1.1272|
0004f8  e51f007c          LDR      r0,|L1.1156|          ;236
0004fc  e5900010          LDR      r0,[r0,#0x10]         ;236
000500  e3100001          TST      r0,#1                 ;236
000504  0afffffb          BEQ      |L1.1272|             ;236
000508  e51f008c          LDR      r0,|L1.1156|          ;237
00050c  e5d00024          LDRB     r0,[r0,#0x24]         ;237

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -