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

📄 2410lib.txt

📁 此源码是sc3c2410串口测试程序
💻 TXT
📖 第 1 页 / 共 4 页
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 902] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o.\obj\2410lib.o --depend=.\obj\2410lib.d --device=DARMSS9 --apcs=interwork -I..\common\inc -IC:\Keil\ARM\INC\Samsung --omf_browse=.\obj\2410lib.crf ..\common\src\2410lib.c]
                          ARM

                          AREA ||.text||, CODE, READONLY, ALIGN=2

                  port_init PROC
;;;56         //Binary : *0     1       1      1,     1      1      1      1,     1      1      1      1         
;;;57         rGPACON = 0x5ef7ff;
000000  e59f03a0          LDR      r0,|L1.936|
000004  e3a01456          MOV      r1,#0x56000000
000008  e5810000          STR      r0,[r1,#0]
;;;58     
;;;59         //===* PORT B GROUP
;;;60         //Ports  : GPB10  GPB9   GPB8   GPB7   GPB6   GPB5    GPB4    GPB3   GPB2   GPB1  GPB0
;;;61         //Signal : GPB10  GPB9   GPB8   GPB7   GPB6   DIS_OFF L3CLOCK L3DATA L3MODE PWM2  PWM1
;;;62         //Setting: Output Output Output Output Output Output  Output  Output Output TOUT1 TOUT0 
;;;63         //Binary : 01,    01     *01,   *01    *01,   01      01,     01     01,    10    10  
;;;64         rGPBCON = 0x155559;
00000c  e59f0398          LDR      r0,|L1.940|
000010  e5810010          STR      r0,[r1,#0x10]
;;;65         rGPBUP  = 0x7ff;      // The pull up function is disabled GPB[10:0]
000014  e59f0394          LDR      r0,|L1.944|
000018  e5810018          STR      r0,[r1,#0x18]
;;;66     
;;;67         //=== PORT C GROUP
;;;68         //Ports  : GPC15 GPC14 GPC13 GPC12 GPC11 GPC10 GPC9 GPC8 GPC7   GPC6   GPC5   GPC4 GPC3   GPC2  GPC1 GPC0
;;;69         //Signal : VD7   VD6   VD5   VD4   VD3   VD2   VD1  VD0  Output Output Output OUT   VFRAME VLINE VCLK LEND  
;;;70         //Binary : 10    10,   10    10,   10    10,   10   10,  *01    *01,   *01    01,  10     10,   10   10
;;;71         rGPCCON = 0xaaaa55aa;       
00001c  e59f0390          LDR      r0,|L1.948|
000020  e5810020          STR      r0,[r1,#0x20]
;;;72         rGPCUP  = 0xffff;     // The pull up function is disabled GPC[15:0] 
000024  e0200460          EOR      r0,r0,r0,ROR #8
000028  e5810028          STR      r0,[r1,#0x28]
;;;73     
;;;74         //=== PORT D GROUP
;;;75         //Ports  : GPD15 GPD14 GPD13 GPD12 GPD11 GPD10 GPD9 GPD8 GPD7 GPD6 GPD5 GPD4 GPD3 GPD2 GPD1 GPD0
;;;76         //Signal : VD23  VD22  VD21  VD20  VD19  VD18  VD17 VD16 VD15 VD14 VD13 VD12 VD11 VD10 VD9  VD8
;;;77         //Binary : 10    10,   10    10,   10    10,   10   10,  10   10,  10   10,  10   10,  10   10
;;;78         rGPDCON = 0xaaaaaaaa;       
00002c  e59f0384          LDR      r0,|L1.952|
000030  e5810030          STR      r0,[r1,#0x30]
;;;79         rGPDUP  = 0xffff;     // The pull up function is disabled GPD[15:0]
000034  e59f0380          LDR      r0,|L1.956|
000038  e5810038          STR      r0,[r1,#0x38]
;;;80     
;;;81         //=== PORT E GROUP
;;;82         //Ports  : GPE15  GPE14  GPE13  GPE12   GPE11   GPE10   GPE9    GPE8     GPE7  GPE6  GPE5   GPE4  
;;;83         //Signal : IICSDA IICSCL SPICLK SPIMOSI SPIMISO SDDATA3 SDDATA2 SDDATA1 SDDATA0 SDCMD SDCLK I2SSDO 
;;;84         //Binary : 10     10,    10     10,     10      10,     10      10,      10    10,   10     10,       
;;;85         //----------------------------------------------------------------------------------------
;;;86         //Ports  :  GPE3   GPE2  GPE1    GPE0    
;;;87         //Signal : I2SSDI CDCLK I2SSCLK I2SLRCK     
;;;88         //Binary :  10     10,    10      10 
;;;89         rGPECON = 0xa6aaaaaa;       
00003c  e59f037c          LDR      r0,|L1.960|
000040  e5810040          STR      r0,[r1,#0x40]
;;;90         rGPEUP  = 0xffff;     // The pull up function is disabled GPE[15:0]
000044  e59f0370          LDR      r0,|L1.956|
000048  e5810048          STR      r0,[r1,#0x48]
;;;91     	rGPEDAT = 0x2000;
00004c  e3a00a02          MOV      r0,#0x2000
000050  e5810044          STR      r0,[r1,#0x44]
;;;92         //=== PORT F GROUP
;;;93         //Ports  : GPF7   GPF6   GPF5   GPF4   GPF3    GPF2      GPF1    GPF0
;;;94         //Signal : LED_4  LED_3  LED_2  LED_1  PS2_INT CPLD_INT1 KEY_INT BUT_INT1
;;;95         //Setting: Output Output Output Output EINT3   EINT2     EINT1   EINT0
;;;96         //Binary : 01     01,    01     01,    10      10,       10      10
;;;97         rGPFCON = 0x55aa;
000054  e59f0368          LDR      r0,|L1.964|
000058  e5810050          STR      r0,[r1,#0x50]
;;;98         rGPFUP  = 0xff;     // The pull up function is disabled GPF[7:0]
00005c  e3a000ff          MOV      r0,#0xff
000060  e5810058          STR      r0,[r1,#0x58]
;;;99     
;;;100        //=== PORT G GROUP
;;;101        //Ports  : GPG15 GPG14 GPG13 GPG12 GPG11  GPG10  GPG9      GPG8      GPG7    GPG6    
;;;102        //Signal : nYPON YMON  nXPON XMON  GPG11  SD_CD  CPLD_INT3 CPLD_INT2 SPICLK1 SPIMOSI
;;;103        //Setting: nYPON YMON  nXPON XMON  Output Iutput EINT17    EINT17    SPICLK1 SPIMOSI1
;;;104        //Binary : 11    11,   11    11,   01     00,    10        10,       11      11
;;;105        //---------------------------------------------------------------------------------------
;;;106        //Ports  : GPG5     GPG4      GPG3     GPG2 GPG1    GPG0    
;;;107        //Signal : SPIMISO1 LCD_PWREN BUT_INT2 nSS0 NET_INT GPG0
;;;108        //Setting: SPIMISO1 LCD_PWRDN EINT11   nSS0 EINT9   Output
;;;109        //Binary : 11       11,       10       11,  10      *01
;;;110        rGPGCON = 0xff4af7b9;
000064  e59f035c          LDR      r0,|L1.968|
000068  e5810060          STR      r0,[r1,#0x60]
;;;111        rGPGUP  = 0xffff;    // The pull up function is disabled GPG[15:0]
00006c  e59f0348          LDR      r0,|L1.956|
000070  e5810068          STR      r0,[r1,#0x68]
;;;112    
;;;113        //rGPGCON = (rGPGCON & 0xfffffcff) | (1<<8);	// GPG4 [9:8] 11  -> LCD_PWREN Enable
;;;114        // Eable LCD 
;;;115        // rGPGDAT = (rGPGDAT & 0xffef) | (1<<4);
;;;116        // close LCD 
;;;117        rGPGDAT = rGPGDAT & 0xffcf;
000074  e3a00456          MOV      r0,#0x56000000
000078  e5900064          LDR      r0,[r0,#0x64]
00007c  e59f1348          LDR      r1,|L1.972|
000080  e0000001          AND      r0,r0,r1
000084  e3a01456          MOV      r1,#0x56000000
000088  e5810064          STR      r0,[r1,#0x64]
;;;118    
;;;119        //=== PORT H GROUP
;;;120        //Ports  : GPH10 GPH9     GPH8   GPH7  GPH6  GPH5 GPH4 GPH3 GPH2 GPH1  GPH0 
;;;121        //Signal : GPH10  CLKOUT0 SD_WP  CTS1  RTS1  RXD1 TXD1 RXD0 TXD0 nRTS0 nCTS0
;;;122        //Setting: Output CLKOUT0 GPH8   nCTS1 nRTS1 RXD1 TXD1 RXD0 TXD0 nRTS0 nCTS0
;;;123        //Binary : 10,    10      10,    11    11,   10   10,  10   10,  10    10
;;;124        rGPHCON = 0x2aaaaa;
00008c  e59f033c          LDR      r0,|L1.976|
000090  e5810070          STR      r0,[r1,#0x70]
;;;125        rGPHUP  = 0x7ff;    // The pull up function is disabled GPH[10:0]
000094  e59f0314          LDR      r0,|L1.944|
000098  e5810078          STR      r0,[r1,#0x78]
;;;126        
;;;127    }
00009c  e12fff1e          BX       lr
                          ENDP

                  uart_change_baud PROC
;;;138    void uart_change_baud(int nChannel, int nBaud)
;;;139    {
0000a0  e92d4030          PUSH     {r4,r5,lr}
0000a4  e24dd01c          SUB      sp,sp,#0x1c
0000a8  e1a04000          MOV      r4,r0
0000ac  e1a05001          MOV      r5,r1
;;;140        if (nChannel == UART0)
0000b0  e3540000          CMP      r4,#0
0000b4  1a000013          BNE      |L1.264|
;;;141    	    rUBRDIV0=( (int)(PCLK/16./nBaud + 0.5) -1 );
0000b8  e1a00005          MOV      r0,r5
0000bc  ebfffffe          BL       __aeabi_i2d
0000c0  e58d0010          STR      r0,[sp,#0x10]
0000c4  e58d1014          STR      r1,[sp,#0x14]
0000c8  e1a03001          MOV      r3,r1
0000cc  e1a02000          MOV      r2,r0
0000d0  e28f0fbf          ADR      r0,|L1.980|
0000d4  e8900003          LDM      r0,{r0,r1}
0000d8  ebfffffe          BL       __aeabi_ddiv
0000dc  e58d0008          STR      r0,[sp,#8]
0000e0  e58d100c          STR      r1,[sp,#0xc]
0000e4  e28f0e2f          ADR      r0,|L1.988|
0000e8  e890000c          LDM      r0,{r2,r3}
0000ec  e59d0008          LDR      r0,[sp,#8]
0000f0  ebfffffe          BL       __aeabi_dadd
0000f4  e88d0003          STM      sp,{r0,r1}
0000f8  ebfffffe          BL       __aeabi_d2iz
0000fc  e2400001          SUB      r0,r0,#1
000100  e3a01205          MOV      r1,#0x50000000
000104  e5810028          STR      r0,[r1,#0x28]
                  |L1.264|
;;;142        
;;;143        if (nChannel == UART1)
000108  e3540001          CMP      r4,#1
00010c  1a00000e          BNE      |L1.332|
;;;144    	    rUBRDIV1=( (int)(PCLK/16./nBaud) -1 );
000110  e1a00005          MOV      r0,r5
000114  ebfffffe          BL       __aeabi_i2d
000118  e58d0010          STR      r0,[sp,#0x10]
00011c  e58d1014          STR      r1,[sp,#0x14]
000120  e1a03001          MOV      r3,r1
000124  e1a02000          MOV      r2,r0
000128  e28f0fa9          ADR      r0,|L1.980|
00012c  e8900003          LDM      r0,{r0,r1}
000130  ebfffffe          BL       __aeabi_ddiv
000134  e58d0008          STR      r0,[sp,#8]
000138  e58d100c          STR      r1,[sp,#0xc]
00013c  ebfffffe          BL       __aeabi_d2iz
000140  e2400001          SUB      r0,r0,#1
000144  e59f1298          LDR      r1,|L1.996|
000148  e5810028          STR      r0,[r1,#0x28]
                  |L1.332|
;;;145    
;;;146        if (nChannel == UART2)
00014c  e35400bb          CMP      r4,#0xbb
000150  1a00000e          BNE      |L1.400|
;;;147    	    rUBRDIV2=( (int)(PCLK/16./nBaud) -1 );
000154  e1a00005          MOV      r0,r5
000158  ebfffffe          BL       __aeabi_i2d
00015c  e58d0010          STR      r0,[sp,#0x10]
000160  e58d1014          STR      r1,[sp,#0x14]
000164  e1a03001          MOV      r3,r1
000168  e1a02000          MOV      r2,r0
00016c  e28f0e26          ADR      r0,|L1.980|
000170  e8900003          LDM      r0,{r0,r1}
000174  ebfffffe          BL       __aeabi_ddiv
000178  e58d0008          STR      r0,[sp,#8]
00017c  e58d100c          STR      r1,[sp,#0xc]
000180  ebfffffe          BL       __aeabi_d2iz
000184  e2400001          SUB      r0,r0,#1
000188  e59f1258          LDR      r1,|L1.1000|
00018c  e5810028          STR      r0,[r1,#0x28]
                  |L1.400|
;;;148    }
000190  e28dd01c          ADD      sp,sp,#0x1c
000194  e8bd4030          POP      {r4,r5,lr}
000198  e12fff1e          BX       lr
                          ENDP

                  delay PROC
;;;582    void delay(int nTime)
;;;583    {
00019c  e92d4070          PUSH     {r4-r6,lr}
0001a0  e1a04000          MOV      r4,r0
;;;584          // time=0: adjust the Delay function by WatchDog timer.
;;;585          // time>0: the number of loop time
;;;586          // resolution of time is 100us.
;;;587        int i,adjust=0;
0001a4  e3a06000          MOV      r6,#0
;;;588        if(nTime==0)
0001a8  e3540000          CMP      r4,#0
0001ac  1a00000c          BNE      |L1.484|
;;;589        {
;;;590            nTime   = 200;
0001b0  e3a040c8          MOV      r4,#0xc8
;;;591            adjust = 1;
0001b4  e3a06001          MOV      r6,#1
;;;592            delayLoopCount = 400;
0001b8  e3a00e19          MOV      r0,#0x190
0001bc  e59f1228          LDR      r1,|L1.1004|
0001c0  e5810000          STR      r0,[r1,#0]  ; delayLoopCount
;;;593    		//PCLK/1M,Watch-dog disable,1/64,interrupt disable,reset disable
;;;594            rWTCON = ((PCLK/1000000-1)<<8)|(2<<3); 
0001c4  e2800dbe          ADD      r0,r0,#0x2f80
0001c8  e3a01453          MOV      r1,#0x53000000
0001cc  e5810000          STR      r0,[r1,#0]
;;;595            rWTDAT = 0xffff;                              //for first update
0001d0  e0660806          RSB      r0,r6,r6,LSL #16
0001d4  e5810004          STR      r0,[r1,#4]
;;;596            rWTCNT = 0xffff;                              //resolution=64us @any PCLK 
0001d8  e5810008          STR      r0,[r1,#8]
;;;597            rWTCON = ((PCLK/1000000-1)<<8)|(2<<3)|(1<<5); //Watch-dog timer start
0001dc  e59f020c          LDR      r0,|L1.1008|
0001e0  e5810000          STR      r0,[r1,#0]
                  |L1.484|
;;;598        }
;;;599        for(;nTime>0;nTime--)
0001e4  ea000007          B        |L1.520|
                  |L1.488|
;;;600            for(i=0;i<delayLoopCount;i++);
0001e8  e3a05000          MOV      r5,#0
0001ec  ea000000          B        |L1.500|
                  |L1.496|
0001f0  e2855001          ADD      r5,r5,#1
                  |L1.500|
0001f4  e59f01f0          LDR      r0,|L1.1004|
0001f8  e5900000          LDR      r0,[r0,#0]  ; delayLoopCount
0001fc  e1550000          CMP      r5,r0
000200  bafffffa          BLT      |L1.496|
000204  e2444001          SUB      r4,r4,#1
                  |L1.520|
000208  e3540000          CMP      r4,#0
00020c  cafffff5          BGT      |L1.488|
;;;601        if(adjust==1)
000210  e3560001          CMP      r6,#1
000214  1a00000b          BNE      |L1.584|
;;;602        {
;;;603            rWTCON = ((PCLK/1000000-1)<<8)|(2<<3);   //Watch-dog timer stop
000218  e59f01d4          LDR      r0,|L1.1012|
00021c  e3a01453          MOV      r1,#0x53000000
000220  e5810000          STR      r0,[r1,#0]
;;;604            i = 0xffff - rWTCNT;                     //1count->64us, 200*400 cycle runtime = 64*i us
000224  e3a00453          MOV      r0,#0x53000000
000228  e5900008          LDR      r0,[r0,#8]
00022c  e59f1188          LDR      r1,|L1.956|
000230  e0415000          SUB      r5,r1,r0
;;;605            delayLoopCount = 8000000/(i*64);         //200*400:64*i=1*x:100 -> x=80000*100/(64*i)   
000234  e1a01305          LSL      r1,r5,#6
000238  e59f01b8          LDR      r0,|L1.1016|
00023c  ebfffffe          BL       __aeabi_idivmod
000240  e59f11a4          LDR      r1,|L1.1004|
000244  e5810000          STR      r0,[r1,#0]  ; delayLoopCount
                  |L1.584|
;;;606        }
;;;607    }
000248  e8bd4070          POP      {r4-r6,lr}
00024c  e12fff1e          BX       lr
                          ENDP

                  uart_init PROC
;;;160    void uart_init(int nMainClk, int nBaud, int nChannel)
;;;161    {
000250  e92d40f0          PUSH     {r4-r7,lr}
000254  e24dd02c          SUB      sp,sp,#0x2c
000258  e1a04000          MOV      r4,r0
00025c  e1a05001          MOV      r5,r1
000260  e1a06002          MOV      r6,r2
;;;162        int i;
;;;163        
;;;164        if(nMainClk == 0)
000264  e3540000          CMP      r4,#0
000268  1a000000          BNE      |L1.624|
;;;165        nMainClk    = PCLK;
00026c  e59f4188          LDR      r4,|L1.1020|
                  |L1.624|
;;;166        
;;;167        switch (nChannel)
000270  e3560000          CMP      r6,#0
000274  0a000004          BEQ      |L1.652|
000278  e3560001          CMP      r6,#1
00027c  0a000028          BEQ      |L1.804|
000280  e35600bb          CMP      r6,#0xbb
000284  1a000080          BNE      |L1.1164|
000288  ea00005f          B        |L1.1036|
                  |L1.652|
;;;168        {
;;;169        	case UART0: 
00028c  e1a00000          MOV      r0,r0
;;;170    			rUFCON0 = 0x0;   //UART channel 0 FIFO control register, FIFO disable

⌨️ 快捷键说明

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