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

📄 bsp.txt

📁 lpc2478开发板基于IAR编译器移植ucos实验例程
💻 TXT
📖 第 1 页 / 共 5 页
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 903] for uVision
; commandline ArmCC [--debug -c --asm --interleave -obsp.o --depend=bsp.d --device=DARMP --apcs=interwork -I. -I..\BSP -I..\..\..\..\..\uCOS-II\Ports\ARM\Generic\RVMDK -I..\..\..\..\..\uCOS-II\Source -I..\..\..\..\..\uC-CPU -I..\..\..\..\..\uC-CPU\ARM\RVMDK -I..\..\..\..\..\uC-LIB -I..\..\..\..\..\uCOSView\Source -I..\..\..\..\..\uCOSView\Ports\ARM7\LPC2468\IAR -Id:\Keil\ARM\INC\Philips ..\BSP\bsp.c]
                          ARM

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

                  BSP_CPU_ClkFreq PROC
;;;242    CPU_INT32U  BSP_CPU_ClkFreq (void)
;;;243    {
000000  e92d47f0          PUSH     {r4-r10,lr}
;;;244        CPU_INT32U  msel;
;;;245        CPU_INT32U  nsel;
;;;246        CPU_INT32U  fin;
;;;247        CPU_INT32U  pll_clk_feq;                                    /* When the PLL is enabled, this is Fcco                    */
;;;248        CPU_INT32U  clk_div;
;;;249        CPU_INT32U  clk_freq;
;;;250    
;;;251    
;;;252        switch (CLKSRCSEL & 0x03) {                                 /* Determine the current clock source                       */
000004  e59f0e64          LDR      r0,|L1.3696|
000008  e590010c          LDR      r0,[r0,#0x10c]
00000c  e2100003          ANDS     r0,r0,#3
000010  0a000004          BEQ      |L1.40|
000014  e3500001          CMP      r0,#1
000018  0a000005          BEQ      |L1.52|
00001c  e3500002          CMP      r0,#2
000020  1a000009          BNE      |L1.76|
000024  ea000005          B        |L1.64|
                  |L1.40|
;;;253            case 0:
000028  e1a00000          MOV      r0,r0
;;;254                 fin        =  IRC_OSC_FRQ;
00002c  e59f6e40          LDR      r6,|L1.3700|
;;;255                 break;
000030  ea000008          B        |L1.88|
                  |L1.52|
;;;256    
;;;257            case 1:
000034  e1a00000          MOV      r0,r0
;;;258                 fin        =  MAIN_OSC_FRQ;
000038  e59f6e34          LDR      r6,|L1.3700|
;;;259                 break;
00003c  ea000005          B        |L1.88|
                  |L1.64|
;;;260    
;;;261            case 2:
000040  e1a00000          MOV      r0,r0
;;;262                 fin        =  RTC_OSC_FRQ;
000044  e3a06902          MOV      r6,#0x8000
;;;263                 break;
000048  ea000002          B        |L1.88|
                  |L1.76|
;;;264    
;;;265            default:
00004c  e1a00000          MOV      r0,r0
;;;266                 fin        =  IRC_OSC_FRQ;
000050  e59f6e1c          LDR      r6,|L1.3700|
;;;267                 break;
000054  e1a00000          MOV      r0,r0
                  |L1.88|
000058  e1a00000          MOV      r0,r0
;;;268        }
;;;269    
;;;270        if ((PLLSTAT & (1 << 25)) > 0) {                                /* If the PLL is currently enabled and connected        */
00005c  e59f0e0c          LDR      r0,|L1.3696|
000060  e5900088          LDR      r0,[r0,#0x88]
000064  e3100402          TST      r0,#0x2000000
000068  0a00000f          BEQ      |L1.172|
;;;271            msel        = (CPU_INT32U)(PLLSTAT & 0x3FFF) + 1;           /* Obtain the PLL multiplier                            */
00006c  e59f0dfc          LDR      r0,|L1.3696|
000070  e5900088          LDR      r0,[r0,#0x88]
000074  e1a00900          LSL      r0,r0,#18
000078  e1a00920          LSR      r0,r0,#18
00007c  e2804001          ADD      r4,r0,#1
;;;272            nsel        = (CPU_INT32U)((PLLSTAT >>   16) & 0x0F) + 1;   /* Obtain the PLL divider                               */
000080  e59f0de8          LDR      r0,|L1.3696|
000084  e5900088          LDR      r0,[r0,#0x88]
000088  e3a0100f          MOV      r1,#0xf
00008c  e0010820          AND      r0,r1,r0,LSR #16
000090  e2805001          ADD      r5,r0,#1
;;;273            pll_clk_feq = (2 * msel * fin / nsel);                      /* Compute the PLL output frequency                     */
000094  e1a01084          LSL      r1,r4,#1
000098  e0000691          MUL      r0,r1,r6
00009c  e1a01005          MOV      r1,r5
0000a0  ebfffffe          BL       __aeabi_uidivmod
0000a4  e1a07000          MOV      r7,r0
0000a8  ea000000          B        |L1.176|
                  |L1.172|
;;;274        } else {
;;;275            pll_clk_feq = (fin);                                        /* The PLL is bypassed                                  */
0000ac  e1a07006          MOV      r7,r6
                  |L1.176|
;;;276        }
;;;277    
;;;278        clk_div         = (CPU_INT08U)(CCLKCFG & 0x0F) + 1;             /* Obtain the CPU core clock divider                    */
0000b0  e59f0db8          LDR      r0,|L1.3696|
0000b4  e5900104          LDR      r0,[r0,#0x104]
0000b8  e200000f          AND      r0,r0,#0xf
0000bc  e2808001          ADD      r8,r0,#1
;;;279        clk_freq        = (CPU_INT32U)(pll_clk_feq / clk_div);          /* Compute the ARM Core clock frequency                 */
0000c0  e1a01008          MOV      r1,r8
0000c4  e1a00007          MOV      r0,r7
0000c8  ebfffffe          BL       __aeabi_uidivmod
0000cc  e1a09000          MOV      r9,r0
;;;280    
;;;281        return (clk_freq);
0000d0  e1a00009          MOV      r0,r9
0000d4  e8bd47f0          POP      {r4-r10,lr}
;;;282    }
0000d8  e12fff1e          BX       lr
                          ENDP

                  BSP_CPU_PclkFreq PROC
;;;298    CPU_INT32U  BSP_CPU_PclkFreq (CPU_INT08U  pclk)
;;;299    {
0000dc  e92d4070          PUSH     {r4-r6,lr}
0000e0  e1a04000          MOV      r4,r0
;;;300        CPU_INT32U  clk_freq;
;;;301        CPU_INT32U  selection;
;;;302    
;;;303    
;;;304        clk_freq    = BSP_CPU_ClkFreq();
0000e4  ebfffffe          BL       BSP_CPU_ClkFreq
0000e8  e1a06000          MOV      r6,r0
;;;305    
;;;306        switch (pclk) {
0000ec  e354001e          CMP      r4,#0x1e
0000f0  308ff104          ADDCC    pc,pc,r4,LSL #2
0000f4  ea000061          B        |L1.640|
0000f8  ea00001c          B        |L1.368|
0000fc  ea00001d          B        |L1.376|
000100  ea00001d          B        |L1.380|
000104  ea00001d          B        |L1.384|
000108  ea00001d          B        |L1.388|
00010c  ea00001d          B        |L1.392|
000110  ea00001d          B        |L1.396|
000114  ea00001d          B        |L1.400|
000118  ea00001d          B        |L1.404|
00011c  ea00001d          B        |L1.408|
000120  ea00001d          B        |L1.412|
000124  ea00001d          B        |L1.416|
000128  ea00001d          B        |L1.420|
00012c  ea00001d          B        |L1.424|
000130  ea00001d          B        |L1.428|
000134  ea00001d          B        |L1.432|
000138  ea000030          B        |L1.512|
00013c  ea000031          B        |L1.520|
000140  ea000031          B        |L1.524|
000144  ea000031          B        |L1.528|
000148  ea00004c          B        |L1.640|
00014c  ea000030          B        |L1.532|
000150  ea000030          B        |L1.536|
000154  ea000030          B        |L1.540|
000158  ea000030          B        |L1.544|
00015c  ea000030          B        |L1.548|
000160  ea000030          B        |L1.552|
000164  ea000030          B        |L1.556|
000168  ea000044          B        |L1.640|
00016c  ea00002f          B        |L1.560|
                  |L1.368|
;;;307            case PCLK_WDT:
000170  e1a00000          MOV      r0,r0
;;;308            case PCLK_TIMER0:
000174  e1a00000          MOV      r0,r0
                  |L1.376|
;;;309            case PCLK_TIMER1:
000178  e1a00000          MOV      r0,r0
                  |L1.380|
;;;310            case PCLK_UART0:
00017c  e1a00000          MOV      r0,r0
                  |L1.384|
;;;311            case PCLK_UART1:
000180  e1a00000          MOV      r0,r0
                  |L1.388|
;;;312            case PCLK_PWM0:
000184  e1a00000          MOV      r0,r0
                  |L1.392|
;;;313            case PCLK_PWM1:
000188  e1a00000          MOV      r0,r0
                  |L1.396|
;;;314            case PCLK_I2C0:
00018c  e1a00000          MOV      r0,r0
                  |L1.400|
;;;315            case PCLK_SPI:
000190  e1a00000          MOV      r0,r0
                  |L1.404|
;;;316            case PCLK_RTC:
000194  e1a00000          MOV      r0,r0
                  |L1.408|
;;;317            case PCLK_SSP1:
000198  e1a00000          MOV      r0,r0
                  |L1.412|
;;;318            case PCLK_DAC:
00019c  e1a00000          MOV      r0,r0
                  |L1.416|
;;;319            case PCLK_ADC:
0001a0  e1a00000          MOV      r0,r0
                  |L1.420|
;;;320            case PCLK_CAN1:
0001a4  e1a00000          MOV      r0,r0
                  |L1.424|
;;;321            case PCLK_CAN2:
0001a8  e1a00000          MOV      r0,r0
                  |L1.428|
;;;322            case PCLK_ACF:
0001ac  e1a00000          MOV      r0,r0
                  |L1.432|
;;;323                 selection = ((PCLKSEL0 >> (pclk * 2)) & 0x03);
0001b0  e59f0cb8          LDR      r0,|L1.3696|
0001b4  e59001a8          LDR      r0,[r0,#0x1a8]
0001b8  e1a01084          LSL      r1,r4,#1
0001bc  e1a00130          LSR      r0,r0,r1
0001c0  e2005003          AND      r5,r0,#3
;;;324                 if (selection == 0) {
0001c4  e3550000          CMP      r5,#0
0001c8  1a000002          BNE      |L1.472|
;;;325                     return (clk_freq / 4);
0001cc  e1a00126          LSR      r0,r6,#2
                  |L1.464|
0001d0  e8bd4070          POP      {r4-r6,lr}
;;;326                 } else if (selection == 1) {
;;;327                     return (clk_freq);
;;;328                 } else if (selection == 2) {
;;;329                     return (clk_freq / 2);
;;;330                 } else {
;;;331                     return (clk_freq / 8);
;;;332                 }
;;;333    
;;;334            case PCLK_BAT_RAM:
;;;335            case PCLK_GPIO:
;;;336            case PCLK_PCB:
;;;337            case PCLK_I2C1:
;;;338            case PCLK_SSP0:
;;;339            case PCLK_TIMER2:
;;;340            case PCLK_TIMER3:
;;;341            case PCLK_UART2:
;;;342            case PCLK_UART3:
;;;343            case PCLK_I2C2:
;;;344            case PCLK_MCI:
;;;345            case PCLK_SYSCON:
;;;346                 selection = ((PCLKSEL1 >> ((pclk - 16) * 2)) & 0x03);
;;;347                 if (selection == 0) {
;;;348                     return (clk_freq / 4);
;;;349                 } else if (selection == 1) {
;;;350                     return (clk_freq);
;;;351                 } else if (selection == 2) {
;;;352                     return (clk_freq / 2);
;;;353                 } else {
;;;354                     return (clk_freq / 8);
;;;355                 }
;;;356    
;;;357            default:
;;;358                 return (0);
;;;359        }
;;;360    }
0001d4  e12fff1e          BX       lr
                  |L1.472|
0001d8  e3550001          CMP      r5,#1
0001dc  1a000001          BNE      |L1.488|
0001e0  e1a00006          MOV      r0,r6
0001e4  eafffff9          B        |L1.464|
                  |L1.488|
0001e8  e3550002          CMP      r5,#2
0001ec  1a000001          BNE      |L1.504|
0001f0  e1a000a6          LSR      r0,r6,#1
0001f4  eafffff5          B        |L1.464|
                  |L1.504|
0001f8  e1a001a6          LSR      r0,r6,#3
0001fc  eafffff3          B        |L1.464|
                  |L1.512|
000200  e1a00000          MOV      r0,r0
000204  e1a00000          MOV      r0,r0
                  |L1.520|
000208  e1a00000          MOV      r0,r0
                  |L1.524|
00020c  e1a00000          MOV      r0,r0
                  |L1.528|
000210  e1a00000          MOV      r0,r0
                  |L1.532|
000214  e1a00000          MOV      r0,r0
                  |L1.536|
000218  e1a00000          MOV      r0,r0
                  |L1.540|
00021c  e1a00000          MOV      r0,r0
                  |L1.544|
000220  e1a00000          MOV      r0,r0
                  |L1.548|
000224  e1a00000          MOV      r0,r0
                  |L1.552|
000228  e1a00000          MOV      r0,r0
                  |L1.556|
00022c  e1a00000          MOV      r0,r0
                  |L1.560|
000230  e59f0c38          LDR      r0,|L1.3696|

⌨️ 快捷键说明

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