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

📄 bsp.lst

📁 IARSOURCECODE是基于LPC2478嵌入式软件IAR EWARM V4.42的应用实例代码
💻 LST
📖 第 1 页 / 共 5 页
字号:
    255                       break;
    256          
    257                  case 1:
    258                       fin        =  MAIN_OSC_FRQ;
   \                     ??BSP_CPU_ClkFreq_4:
   \   00000034   B708A0E3           MOV      R0,#+11993088
   \   00000038   6C0D80E3           ORR      R0,R0,#0x1B00
   \   0000003C   030000EA           B        ??BSP_CPU_ClkFreq_3
    259                       break;
    260          
    261                  case 2:
    262                       fin        =  RTC_OSC_FRQ;
   \                     ??BSP_CPU_ClkFreq_5:
   \   00000040   800CA0E3           MOV      R0,#+32768
   \   00000044   010000EA           B        ??BSP_CPU_ClkFreq_3
    263                       break;
    264          
    265                  default:
    266                       fin        =  IRC_OSC_FRQ;
   \                     ??BSP_CPU_ClkFreq_1:
   \   00000048   B708A0E3           MOV      R0,#+11993088
   \   0000004C   6C0D80E3           ORR      R0,R0,#0x1B00
    267                       break;
    268              }
    269          
    270              if ((PLLSTAT & (1 << 25)) > 0) {                                /* If the PLL is currently enabled and connected        */
   \                     ??BSP_CPU_ClkFreq_3:
   \   00000050   ........           LDR      R1,??DataTable15  ;; 0xffffffffe01fc088
   \   00000054   001091E5           LDR      R1,[R1, #+0]
   \   00000058   800711E3           TST      R1,#0x2000000
   \   0000005C   0F00000A           BEQ      ??BSP_CPU_ClkFreq_6
    271                  msel        = (CPU_INT32U)(PLLSTAT & 0x3FFF) + 1;           /* Obtain the PLL multiplier                            */
   \   00000060   ........           LDR      R1,??DataTable15  ;; 0xffffffffe01fc088
   \   00000064   001091E5           LDR      R1,[R1, #+0]
   \   00000068   0119B0E1           LSLS     R1,R1,#+18
   \   0000006C   0120A0E3           MOV      R2,#+1
   \   00000070   212992E0           ADDS     R2,R2,R1, LSR #+18
    272                  nsel        = (CPU_INT32U)((PLLSTAT >>   16) & 0x0F) + 1;   /* Obtain the PLL divider                               */
   \   00000074   ........           LDR      R1,??DataTable15  ;; 0xffffffffe01fc088
   \   00000078   001091E5           LDR      R1,[R1, #+0]
   \   0000007C   0F30A0E3           MOV      R3,#+15
   \   00000080   211813E0           ANDS     R1,R3,R1, LSR #+16
   \   00000084   011091E2           ADDS     R1,R1,#+1
    273                  pll_clk_feq = (2 * msel * fin / nsel);                      /* Compute the PLL output frequency                     */
   \   00000088   900212E0           MULS     R2,R0,R2
   \   0000008C   0230A0E3           MOV      R3,#+2
   \   00000090   930210E0           MULS     R0,R3,R2
   \   00000094   ........           _BLF     ??divu32_a,??rA??divu32_a
   \   00000098   0100B0E1           MOVS     R0,R1
   \   0000009C   FFFFFFEA           B        ??BSP_CPU_ClkFreq_7
    274              } else {
    275                  pll_clk_feq = (fin);                                        /* The PLL is bypassed                                  */
    276              }
    277          
    278              clk_div         = (CPU_INT08U)(CCLKCFG & 0x0F) + 1;             /* Obtain the CPU core clock divider                    */
   \                     ??BSP_CPU_ClkFreq_6:
   \                     ??BSP_CPU_ClkFreq_7:
   \   000000A0   ........           LDR      R1,??DataTable11  ;; 0xffffffffe01fc104
   \   000000A4   001091E5           LDR      R1,[R1, #+0]
   \   000000A8   0F1011E2           ANDS     R1,R1,#0xF
   \   000000AC   011091E2           ADDS     R1,R1,#+1
    279              clk_freq        = (CPU_INT32U)(pll_clk_feq / clk_div);          /* Compute the ARM Core clock frequency                 */
   \   000000B0   ........           _BLF     ??divu32_a,??rA??divu32_a
   \   000000B4   0100B0E1           MOVS     R0,R1
    280          
    281              return (clk_freq);
   \   000000B8   0080BDE8           POP      {PC}             ;; return
    282          }
    283          
    284          /*
    285          *********************************************************************************************************
    286          *                                      Get a Peripheral Clock Frequency
    287          *
    288          * Description : This function reads CPU registers to determine the the clock frequency for the specified
    289          *               peripheral
    290          *
    291          * Arguements  : An ID, one of PCLK_??? defined in bsp.c
    292          *
    293          * Returns     : The peripheral's clock in Hz
    294          *********************************************************************************************************
    295          */
    296          
    297          

   \                                 In segment CODE, align 4, keep-with-next
    298          CPU_INT32U  BSP_CPU_PclkFreq (CPU_INT08U  pclk)
    299          {
   \                     BSP_CPU_PclkFreq:
   \   00000000   10402DE9           PUSH     {R4,LR}
   \   00000004   0040B0E1           MOVS     R4,R0
    300              CPU_INT32U  clk_freq;
    301              CPU_INT32U  selection;
    302          
    303          
    304              clk_freq    = BSP_CPU_ClkFreq();
   \   00000008   ........           BL       BSP_CPU_ClkFreq
    305          
    306              switch (pclk) {
   \   0000000C   0410B0E1           MOVS     R1,R4
   \   00000010   1D0051E3           CMP      R1,#+29
   \   00000014   2F00008A           BHI      ??BSP_CPU_PclkFreq_1
   \   00000018   012F8FE2           ADR      R2,??BSP_CPU_PclkFreq_0
   \   0000001C   0120D2E7           LDRB     R2,[R2, R1]
   \   00000020   02F18FE0           ADD      PC,PC,R2, LSL #+2
   \                     ??BSP_CPU_PclkFreq_0:
   \   00000024   07070707           DC8      +7,+7,+7,+7
   \   00000028   07070707           DC8      +7,+7,+7,+7
   \   0000002C   07070707           DC8      +7,+7,+7,+7
   \   00000030   07070707           DC8      +7,+7,+7,+7
   \   00000034   19191919           DC8      +25,+25,+25,+25
   \   00000038   2C191919           DC8      +44,+25,+25,+25
   \   0000003C   19191919           DC8      +25,+25,+25,+25
   \   00000040   2C190000           DC8      +44,+25,+0,+0
    307                  case PCLK_WDT:
    308                  case PCLK_TIMER0:
    309                  case PCLK_TIMER1:
    310                  case PCLK_UART0:
    311                  case PCLK_UART1:
    312                  case PCLK_PWM0:
    313                  case PCLK_PWM1:
    314                  case PCLK_I2C0:
    315                  case PCLK_SPI:
    316                  case PCLK_RTC:
    317                  case PCLK_SSP1:
    318                  case PCLK_DAC:
    319                  case PCLK_ADC:
    320                  case PCLK_CAN1:
    321                  case PCLK_CAN2:
    322                  case PCLK_ACF:
    323                       selection = ((PCLKSEL0 >> (pclk * 2)) & 0x03);
   \                     ??BSP_CPU_PclkFreq_2:
   \   00000044   ........           LDR      R1,??DataTable13  ;; 0xffffffffe01fc1a8
   \   00000048   001091E5           LDR      R1,[R1, #+0]
   \   0000004C   0220A0E3           MOV      R2,#+2
   \   00000050   920413E0           MULS     R3,R2,R4
   \   00000054   0320A0E3           MOV      R2,#+3
   \   00000058   311312E0           ANDS     R1,R2,R1, LSR R3
    324                       if (selection == 0) {
   \   0000005C   000051E3           CMP      R1,#+0
   \   00000060   0100001A           BNE      ??BSP_CPU_PclkFreq_3
    325                           return (clk_freq / 4);
   \   00000064   2001B0E1           LSRS     R0,R0,#+2
   \   00000068   1B0000EA           B        ??BSP_CPU_PclkFreq_4
    326                       } else if (selection == 1) {
   \                     ??BSP_CPU_PclkFreq_3:
   \   0000006C   010051E3           CMP      R1,#+1
   \   00000070   1900000A           BEQ      ??BSP_CPU_PclkFreq_4
    327                           return (clk_freq);
    328                       } else if (selection == 2) {
   \                     ??BSP_CPU_PclkFreq_5:
   \   00000074   020051E3           CMP      R1,#+2
   \   00000078   0100001A           BNE      ??BSP_CPU_PclkFreq_6
    329                           return (clk_freq / 2);
   \   0000007C   A000B0E1           LSRS     R0,R0,#+1
   \   00000080   150000EA           B        ??BSP_CPU_PclkFreq_4
    330                       } else {
    331                           return (clk_freq / 8);
   \                     ??BSP_CPU_PclkFreq_6:
   \   00000084   A001B0E1           LSRS     R0,R0,#+3
   \   00000088   130000EA           B        ??BSP_CPU_PclkFreq_4
    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);
   \                     ??BSP_CPU_PclkFreq_7:
   \   0000008C   ........           LDR      R1,??DataTable14  ;; 0xffffffffe01fc1ac
   \   00000090   001091E5           LDR      R1,[R1, #+0]
   \   00000094   F02094E2           ADDS     R2,R4,#+240
   \   00000098   0230A0E3           MOV      R3,#+2
   \   0000009C   930212E0           MULS     R2,R3,R2
   \   000000A0   0330A0E3           MOV      R3,#+3
   \   000000A4   311213E0           ANDS     R1,R3,R1, LSR R2
    347                       if (selection == 0) {
   \   000000A8   000051E3           CMP      R1,#+0
   \   000000AC   0100001A           BNE      ??BSP_CPU_PclkFreq_8
    348                           return (clk_freq / 4);
   \   000000B0   2001B0E1           LSRS     R0,R0,#+2
   \   000000B4   080000EA           B        ??BSP_CPU_PclkFreq_4
    349                       } else if (selection == 1) {
   \                     ??BSP_CPU_PclkFreq_8:
   \   000000B8   010051E3           CMP      R1,#+1
   \   000000BC   0600000A           BEQ      ??BSP_CPU_PclkFreq_4
    350                           return (clk_freq);
    351                       } else if (selection == 2) {
   \                     ??BSP_CPU_PclkFreq_9:
   \   000000C0   020051E3           CMP      R1,#+2
   \   000000C4   0100001A           BNE      ??BSP_CPU_PclkFreq_10
    352                           return (clk_freq / 2);
   \   000000C8   A000B0E1           LSRS     R0,R0,#+1
   \   000000CC   020000EA           B        ??BSP_CPU_PclkFreq_4
    353                       } else {
    354                           return (clk_freq / 8);
   \                     ??BSP_CPU_PclkFreq_10:
   \   000000D0   A001B0E1           LSRS     R0,R0,#+3
   \   000000D4   000000EA           B        ??BSP_CPU_PclkFreq_4
    355                       }
    356          
    357                  default:
    358                       return (0);
   \                     ??BSP_CPU_PclkFreq_1:
   \   000000D8   0000A0E3           MOV      R0,#+0
   \                     ??BSP_CPU_PclkFreq_4:
   \   000000DC   1080BDE8           POP      {R4,PC}          ;; return
    359              }
    360          }
    361          
    362          /*
    363          *********************************************************************************************************
    364          *                                     DISABLE ALL INTERRUPTS
    365          *
    366          * Description : This function disables all interrupts from the interrupt controller.
    367          *
    368          * Arguments   : none
    369          *
    370          * Returns     : None
    371          *********************************************************************************************************
    372          */
    373          

   \                                 In segment CODE, align 4, keep-with-next
    374          void  BSP_IntDisAll (void)
    37

⌨️ 快捷键说明

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