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

📄 2410lib.txt

📁 此源码是sc3c2410串口测试程序
💻 TXT
📖 第 1 页 / 共 4 页
字号:
000290  e3a00000          MOV      r0,#0
000294  e3a01205          MOV      r1,#0x50000000
000298  e5810008          STR      r0,[r1,#8]
;;;171    			rUMCON0 = 0x0;   //UART chaneel 0 MODEM control register, AFC disable
00029c  e581000c          STR      r0,[r1,#0xc]
;;;172    			rULCON0 = 0x3;   //Line control register : Normal,No parity,1 stop,8 bits
0002a0  e3a00003          MOV      r0,#3
0002a4  e5810000          STR      r0,[r1,#0]
;;;173    	// [10]       [9]     [8]     [7]          [6]      [5]        [4]         [3:2]          [1:0]
;;;174    	// Clock Sel, Tx Int, Rx Int, Rx Time Out, Rx err,  Loop-back, Send break, Transmit Mode, Receive Mode
;;;175    	// 0          1       0,      0            1        0          0,          01             01
;;;176    	// PCLK       Level   Pulse   Disable      Generate Normal     Normal      Interrupt or Polling
;;;177    			rUCON0  = 0x245;								// Control register
0002a8  e59f0150          LDR      r0,|L1.1024|
0002ac  e5810004          STR      r0,[r1,#4]
;;;178    	//		rUBRDIV0=( (int)(nMainClk/16./nBaud) -1 );		// Baud rate divisior register 0
;;;179    			rUBRDIV0=( (int)(nMainClk/16./nBaud+0.5) -1 );	// Baud rate divisior register 0    
0002b0  e1a00005          MOV      r0,r5
0002b4  ebfffffe          BL       __aeabi_i2d
0002b8  e58d0020          STR      r0,[sp,#0x20]
0002bc  e58d1024          STR      r1,[sp,#0x24]
0002c0  e1a00004          MOV      r0,r4
0002c4  ebfffffe          BL       __aeabi_i2d
0002c8  e58d0018          STR      r0,[sp,#0x18]
0002cc  e58d101c          STR      r1,[sp,#0x1c]
0002d0  e28f0f4b          ADR      r0,|L1.1028|
0002d4  e890000c          LDM      r0,{r2,r3}
0002d8  e59d0018          LDR      r0,[sp,#0x18]
0002dc  ebfffffe          BL       __aeabi_ddiv
0002e0  e58d0010          STR      r0,[sp,#0x10]
0002e4  e58d1014          STR      r1,[sp,#0x14]
0002e8  e59d2020          LDR      r2,[sp,#0x20]
0002ec  e59d3024          LDR      r3,[sp,#0x24]
0002f0  ebfffffe          BL       __aeabi_ddiv
0002f4  e58d0008          STR      r0,[sp,#8]
0002f8  e58d100c          STR      r1,[sp,#0xc]
0002fc  e28f00d8          ADR      r0,|L1.988|
000300  e890000c          LDM      r0,{r2,r3}
000304  e59d0008          LDR      r0,[sp,#8]
000308  ebfffffe          BL       __aeabi_dadd
00030c  e88d0003          STM      sp,{r0,r1}
000310  ebfffffe          BL       __aeabi_d2iz
000314  e2400001          SUB      r0,r0,#1
000318  e3a01205          MOV      r1,#0x50000000
00031c  e5810028          STR      r0,[r1,#0x28]
;;;180    			break;
000320  ea00005b          B        |L1.1172|
                  |L1.804|
;;;181    			
;;;182    		case UART1: 
000324  e1a00000          MOV      r0,r0
;;;183    			rUFCON1 = 0x0;   //UART channel 1 FIFO control register, FIFO disable
000328  e3a00000          MOV      r0,#0
00032c  e59f10b0          LDR      r1,|L1.996|
000330  e5810008          STR      r0,[r1,#8]
;;;184    			rUMCON1 = 0x0;   //UART chaneel 1 MODEM control register, AFC disable
000334  e581000c          STR      r0,[r1,#0xc]
;;;185    			rULCON1 = 0x3;
000338  e3a00003          MOV      r0,#3
00033c  e5810000          STR      r0,[r1,#0]
;;;186    			rUCON1  = 0x245;
000340  e59f00b8          LDR      r0,|L1.1024|
000344  e5810004          STR      r0,[r1,#4]
;;;187    			rUBRDIV1=( (int)(nMainClk/16./nBaud) -1 );
000348  e1a00005          MOV      r0,r5
00034c  ebfffffe          BL       __aeabi_i2d
000350  e58d0020          STR      r0,[sp,#0x20]
000354  e58d1024          STR      r1,[sp,#0x24]
000358  e1a00004          MOV      r0,r4
00035c  ebfffffe          BL       __aeabi_i2d
000360  e58d0018          STR      r0,[sp,#0x18]
000364  e58d101c          STR      r1,[sp,#0x1c]
000368  e28f0094          ADR      r0,|L1.1028|
00036c  e890000c          LDM      r0,{r2,r3}
000370  e59d0018          LDR      r0,[sp,#0x18]
000374  ebfffffe          BL       __aeabi_ddiv
000378  e58d0010          STR      r0,[sp,#0x10]
00037c  e58d1014          STR      r1,[sp,#0x14]
000380  e59d2020          LDR      r2,[sp,#0x20]
000384  e59d3024          LDR      r3,[sp,#0x24]
000388  ebfffffe          BL       __aeabi_ddiv
00038c  e58d0008          STR      r0,[sp,#8]
000390  e58d100c          STR      r1,[sp,#0xc]
000394  ebfffffe          BL       __aeabi_d2iz
000398  e2400001          SUB      r0,r0,#1
00039c  e59f1040          LDR      r1,|L1.996|
0003a0  e5810028          STR      r0,[r1,#0x28]
;;;188    			break;
0003a4  ea00003a          B        |L1.1172|
                  |L1.936|
0003a8  005ef7ff          DCD      0x005ef7ff
                  |L1.940|
0003ac  00155559          DCD      0x00155559
                  |L1.944|
0003b0  000007ff          DCD      0x000007ff
                  |L1.948|
0003b4  aaaa55aa          DCD      0xaaaa55aa
                  |L1.952|
0003b8  aaaaaaaa          DCD      0xaaaaaaaa
                  |L1.956|
0003bc  0000ffff          DCD      0x0000ffff
                  |L1.960|
0003c0  a6aaaaaa          DCD      0xa6aaaaaa
                  |L1.964|
0003c4  000055aa          DCD      0x000055aa
                  |L1.968|
0003c8  ff4af7b9          DCD      0xff4af7b9
                  |L1.972|
0003cc  0000ffcf          DCD      0x0000ffcf
                  |L1.976|
0003d0  002aaaaa          DCD      0x002aaaaa
                  |L1.980|
0003d4  00000000
0003d8  41482cf7          DCFD     0x41482cf700000000 ; 3168750
                  |L1.988|
0003dc  00000000
0003e0  3fe00000          DCFD     0x3fe0000000000000 ; 0.5
                  |L1.996|
0003e4  50004000          DCD      0x50004000
                  |L1.1000|
0003e8  50008000          DCD      0x50008000
                  |L1.1004|
0003ec  00000000          DCD      ||.data||
                  |L1.1008|
0003f0  00003130          DCD      0x00003130
                  |L1.1012|
0003f4  00003110          DCD      0x00003110
                  |L1.1016|
0003f8  007a1200          DCD      0x007a1200
                  |L1.1020|
0003fc  03059ee0          DCD      0x03059ee0
                  |L1.1024|
000400  00000245          DCD      0x00000245
                  |L1.1028|
000404  00000000
000408  40300000          DCFD     0x4030000000000000 ; 16
                  |L1.1036|
;;;189    			
;;;190        	case UART2: 
00040c  e1a00000          MOV      r0,r0
;;;191    			rULCON2 = 0x3;
000410  e3a00003          MOV      r0,#3
000414  e51f1034          LDR      r1,|L1.1000|
000418  e5810000          STR      r0,[r1,#0]
;;;192    			rUCON2  = 0x245;
00041c  e51f0024          LDR      r0,|L1.1024|
000420  e5810004          STR      r0,[r1,#4]
;;;193    			rUBRDIV2=( (int)(nMainClk/16./nBaud) -1 );    
000424  e1a00005          MOV      r0,r5
000428  ebfffffe          BL       __aeabi_i2d
00042c  e58d0020          STR      r0,[sp,#0x20]
000430  e58d1024          STR      r1,[sp,#0x24]
000434  e1a00004          MOV      r0,r4
000438  ebfffffe          BL       __aeabi_i2d
00043c  e58d0018          STR      r0,[sp,#0x18]
000440  e58d101c          STR      r1,[sp,#0x1c]
000444  e24f0048          ADR      r0,|L1.1028|
000448  e890000c          LDM      r0,{r2,r3}
00044c  e59d0018          LDR      r0,[sp,#0x18]
000450  ebfffffe          BL       __aeabi_ddiv
000454  e58d0010          STR      r0,[sp,#0x10]
000458  e58d1014          STR      r1,[sp,#0x14]
00045c  e59d2020          LDR      r2,[sp,#0x20]
000460  e59d3024          LDR      r3,[sp,#0x24]
000464  ebfffffe          BL       __aeabi_ddiv
000468  e58d0008          STR      r0,[sp,#8]
00046c  e58d100c          STR      r1,[sp,#0xc]
000470  ebfffffe          BL       __aeabi_d2iz
000474  e2400001          SUB      r0,r0,#1
000478  e51f1098          LDR      r1,|L1.1000|
00047c  e5810028          STR      r0,[r1,#0x28]
;;;194    			rUFCON2 = 0x0;   //UART channel 2 FIFO control register, FIFO disable
000480  e3a00000          MOV      r0,#0
000484  e5810008          STR      r0,[r1,#8]
;;;195    			break;
000488  ea000001          B        |L1.1172|
                  |L1.1164|
;;;196    			
;;;197    		default:
00048c  e1a00000          MOV      r0,r0
;;;198    			break;
000490  e1a00000          MOV      r0,r0
                  |L1.1172|
000494  e1a00000          MOV      r0,r0
;;;199    	}
;;;200    
;;;201        for(i=0;i<100;i++);
000498  e3a07000          MOV      r7,#0
00049c  ea000000          B        |L1.1188|
                  |L1.1184|
0004a0  e2877001          ADD      r7,r7,#1
                  |L1.1188|
0004a4  e3570064          CMP      r7,#0x64
0004a8  bafffffc          BLT      |L1.1184|
;;;202        delay(400);
0004ac  e3a00e19          MOV      r0,#0x190
0004b0  ebfffffe          BL       delay
;;;203    }
0004b4  e28dd02c          ADD      sp,sp,#0x2c
0004b8  e8bd40f0          POP      {r4-r7,lr}
0004bc  e12fff1e          BX       lr
                          ENDP

                  uart_select PROC
;;;214    {
;;;215        f_nWhichUart=nChannel;
0004c0  e59f1550          LDR      r1,|L1.2584|
0004c4  e5810000          STR      r0,[r1,#0]  ; f_nWhichUart
;;;216    }
0004c8  e12fff1e          BX       lr
                          ENDP

                  uart_txempty PROC
;;;227    {
;;;228        if(nChannel==0)
0004cc  e3500000          CMP      r0,#0
0004d0  1a000005          BNE      |L1.1260|
;;;229            while(!(rUTRSTAT0 & 0x4)); //Wait until tx shifter is empty.
0004d4  e1a00000          MOV      r0,r0
                  |L1.1240|
0004d8  e3a01205          MOV      r1,#0x50000000
0004dc  e5911010          LDR      r1,[r1,#0x10]
0004e0  e3110004          TST      r1,#4
0004e4  0afffffb          BEQ      |L1.1240|
0004e8  ea00000e          B        |L1.1320|
                  |L1.1260|
;;;230              
;;;231        else if(nChannel==1)
0004ec  e3500001          CMP      r0,#1
0004f0  1a000005          BNE      |L1.1292|
;;;232            while(!(rUTRSTAT1 & 0x4)); //Wait until tx shifter is empty.
0004f4  e1a00000          MOV      r0,r0
                  |L1.1272|
0004f8  e51f111c          LDR      r1,|L1.996|
0004fc  e5911010          LDR      r1,[r1,#0x10]
000500  e3110004          TST      r1,#4
000504  0afffffb          BEQ      |L1.1272|
000508  ea000006          B        |L1.1320|
                  |L1.1292|
;;;233            
;;;234        else if(nChannel==2)
00050c  e3500002          CMP      r0,#2
000510  1a000004          BNE      |L1.1320|
;;;235            while(!(rUTRSTAT2 & 0x4)); //Wait until tx shifter is empty.
000514  e1a00000          MOV      r0,r0
                  |L1.1304|
000518  e51f1138          LDR      r1,|L1.1000|
00051c  e5911010          LDR      r1,[r1,#0x10]
000520  e3110004          TST      r1,#4
000524  0afffffb          BEQ      |L1.1304|
                  |L1.1320|
;;;236    }
000528  e12fff1e          BX       lr
                          ENDP

                  uart_getch PROC
;;;247    {
;;;248        if(f_nWhichUart==0)
00052c  e59f04e4          LDR      r0,|L1.2584|
000530  e5900000          LDR      r0,[r0,#0]  ; f_nWhichUart
000534  e3500000          CMP      r0,#0
000538  1a000007          BNE      |L1.1372|
;;;249        {       
;;;250            while(!(rUTRSTAT0 & 0x1)); //Receive data ready
00053c  e1a00000          MOV      r0,r0
                  |L1.1344|
000540  e3a00205          MOV      r0,#0x50000000
000544  e5900010          LDR      r0,[r0,#0x10]
000548  e3100001          TST      r0,#1
00054c  0afffffb          BEQ      |L1.1344|
;;;251            return RdURXH0();
000550  e3a00205          MOV      r0,#0x50000000
000554  e5d00024          LDRB     r0,[r0,#0x24]
                  |L1.1368|
;;;252        }
;;;253        else if(f_nWhichUart==1)
;;;254        {       
;;;255            while(!(rUTRSTAT1 & 0x1)); //Receive data ready
;;;256            return RdURXH1();
;;;257        }
;;;258        else if(f_nWhichUart==2)
;;;259        {
;;;260            while(!(rUTRSTAT2 & 0x1)); //Receive data ready
;;;261            return RdURXH2();
;;;262        }
;;;263    	return NULL;
;;;264    }
000558  e12fff1e          BX       lr
                  |L1.1372|
00055c  e59f04b4          LDR      r0,|L1.2584|
000560  e5900000          LDR      r0,[r0,#0]  ; f_nWhichUart
000564  e3500001          CMP      r0,#1
000568  1a000007          BNE      |L1.1420|
00056c  e1a00000          MOV      r0,r0
                  |L1.1392|
000570  e51f0194          LDR      r0,|L1.996|
000574  e5900010          LDR      r0,[r0,#0x10]
000578  e3100001          TST      r0,#1
00057c  0afffffb          BEQ      |L1.1392|
000580  e51f01a4          LDR      r0,|L1.996|
000584  e5d00024          LDRB     r0,[r0,#0x24]
000588  eafffff2          B        |L1.1368|
                  |L1.1420|
00058c  e59f0484          LDR      r0,|L1.2584|
000590  e5900000          LDR      r0,[r0,#0]  ; f_nWhichUart
000594  e3500002          CMP      r0,#2
000598  1a000007          BNE      |L1.1468|
00059c  e1a00000          MOV      r0,r0
                  |L1.1440|
0005a0  e51f01c0          LDR      r0,|L1.1000|
0005a4  e5900010          LDR      r0,[r0,#0x10]

⌨️ 快捷键说明

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