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

📄 system.lst

📁 lpc2148的uart代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
###############################################################################
#                                                                             #
#                                                       18/Apr/2009  12:21:29 #
# IAR ARM ANSI C/C++ Compiler V5.11.0.30622/W32 KICKSTART                     #
# Copyright 1999-2007 IAR Systems. All rights reserved.                       #
#                                                                             #
#    Cpu mode     =  thumb                                                    #
#    Endian       =  little                                                   #
#    Source file  =  J:\IAR5\LPC2148_UART\src\system.c                        #
#    Command line =  J:\IAR5\LPC2148_UART\src\system.c -lCN                   #
#                    J:\IAR5\LPC2148_UART\Debug\List\ -o                      #
#                    J:\IAR5\LPC2148_UART\Debug\Obj\ --no_cse --no_unroll     #
#                    --no_inline --no_code_motion --no_tbaa --no_clustering   #
#                    --no_scheduling --debug --endian little --cpu            #
#                    ARM7TDMI-S -e --fpu None --dlib_config "C:\Program       #
#                    Files\IAR Systems\Embedded Workbench 5.0                 #
#                    Kickstart\ARM\INC\DLib_Config_Normal.h" -I               #
#                    J:\IAR5\LPC2148_UART\include\ -I "C:\Program Files\IAR   #
#                    Systems\Embedded Workbench 5.0 Kickstart\ARM\INC\"       #
#                    --interwork --cpu_mode thumb -Ol                         #
#    List file    =  J:\IAR5\LPC2148_UART\Debug\List\system.lst               #
#    Object file  =  J:\IAR5\LPC2148_UART\Debug\Obj\system.o                  #
#                                                                             #
#                                                                             #
###############################################################################

J:\IAR5\LPC2148_UART\src\system.c
      1          //system.c
      2          #include <iolpc2148.h>
      3          #include "system.h"
      4          
      5          #define VIC_TIMER0_bit (1 << VIC_TIMER0)
      6          
      7          // 根据电路板上晶振设置振荡器频率
      8          //#define OSCILLATOR_CLOCK_FREQUENCY  14745600      //in MHz
      9          #define OSCILLATOR_CLOCK_FREQUENCY  12000000      //in MHz
     10          
     11          

   \                                 In section .text, align 4, keep-with-next
     12          unsigned int GetCclk(void) { // 获得实际处理器时钟频率
   \                     GetCclk:
   \   00000000   01B5               PUSH     {R0,LR}
     13            return OSCILLATOR_CLOCK_FREQUENCY * (PLLCON & 1 ? (PLLCFG & 0xF) + 1 : 1);
   \   00000002   ....               LDR      R0,??DataTable9  ;; 0xe01fc080
   \   00000004   0068               LDR      R0,[R0, #+0]
   \   00000006   C007               LSLS     R0,R0,#+31
   \   00000008   05D5               BPL      ??GetCclk_0
   \   0000000A   ....               LDR      R0,??DataTable5  ;; 0xe01fc084
   \   0000000C   0068               LDR      R0,[R0, #+0]
   \   0000000E   0007               LSLS     R0,R0,#+28       ;; ZeroExtS R0,R0,#+28,#+28
   \   00000010   000F               LSRS     R0,R0,#+28
   \   00000012   401C               ADDS     R0,R0,#+1
   \   00000014   00E0               B        ??GetCclk_1
   \                     ??GetCclk_0:
   \   00000016   0120               MOVS     R0,#+1
   \                     ??GetCclk_1:
   \   00000018   0249               LDR      R1,??GetCclk_2   ;; 0xb71b00
   \   0000001A   4843               MULS     R0,R1,R0
   \   0000001C   08BC               POP      {R3}
   \   0000001E   02BC               POP      {R1}
   \   00000020   0847               BX       R1               ;; return
   \   00000022   C046               Nop      
   \                     ??GetCclk_2:
   \   00000024   001BB700           DC32     0xb71b00
   \   00000028                      REQUIRE _A_PLLCON
   \   00000028                      REQUIRE _A_PLLCFG
     14          }
     15          
     16          //获得外围功能时钟频率

   \                                 In section .text, align 4, keep-with-next
     17          unsigned int GetPclk(void) {
   \                     GetPclk:
   \   00000000   10B5               PUSH     {R4,LR}
     18            unsigned int divider;
     19            switch (VPBDIV & 3) {
   \   00000002   0C48               LDR      R0,??GetPclk_0   ;; 0xe01fc100
   \   00000004   0068               LDR      R0,[R0, #+0]
   \   00000006   8007               LSLS     R0,R0,#+30       ;; ZeroExtS R0,R0,#+30,#+30
   \   00000008   800F               LSRS     R0,R0,#+30
   \   0000000A   0028               CMP      R0,#+0
   \   0000000C   04D0               BEQ      ??GetPclk_1
   \   0000000E   401E               SUBS     R0,R0,#+1
   \   00000010   04D0               BEQ      ??GetPclk_2
   \   00000012   401E               SUBS     R0,R0,#+1
   \   00000014   04D0               BEQ      ??GetPclk_3
   \   00000016   04E0               B        ??GetPclk_4
     20                case 0: divider = 4;  break;
   \                     ??GetPclk_1:
   \   00000018   0424               MOVS     R4,#+4
   \   0000001A   02E0               B        ??GetPclk_4
     21                case 1: divider = 1;  break;
   \                     ??GetPclk_2:
   \   0000001C   0124               MOVS     R4,#+1
   \   0000001E   00E0               B        ??GetPclk_4
     22                case 2: divider = 2;  break;
   \                     ??GetPclk_3:
   \   00000020   0224               MOVS     R4,#+2
     23              }
     24            return GetCclk() / divider;
   \                     ??GetPclk_4:
   \   00000022   ........           BL       GetCclk
   \   00000026   2100               MOVS     R1,R4
   \   00000028   ........           BL       __aeabi_uidivmod
   \   0000002C   10BC               POP      {R4}
   \   0000002E   02BC               POP      {R1}
   \   00000030   0847               BX       R1               ;; return
   \   00000032   C046               Nop      
   \                     ??GetPclk_0:
   \   00000034   00C11FE0           DC32     0xe01fc100
   \   00000038                      REQUIRE _A_VPBDIV
     25          }
     26          
     27          //相乘或相除,这里是计算锁相环频率

   \                                 In section .text, align 4, keep-with-next
     28          void FrecInit(void) {
   \                     FrecInit:
   \   00000000   01B5               PUSH     {R0,LR}
     29            PLLCFG_bit.MSEL = 0x2;   //M - 相乘
   \   00000002   ....               LDR      R0,??DataTable5  ;; 0xe01fc084
   \   00000004   0068               LDR      R0,[R0, #+0]
   \   00000006   1F21               MOVS     R1,#+31
   \   00000008   8843               BICS     R0,R0,R1
   \   0000000A   0221               MOVS     R1,#+2
   \   0000000C   0143               ORRS     R1,R1,R0
   \   0000000E   ....               LDR      R0,??DataTable5  ;; 0xe01fc084
   \   00000010   0160               STR      R1,[R0, #+0]
     30            PLLCFG_bit.PSEL = 0x1;   //P - 相除
   \   00000012   ....               LDR      R0,??DataTable5  ;; 0xe01fc084
   \   00000014   0068               LDR      R0,[R0, #+0]
   \   00000016   6021               MOVS     R1,#+96
   \   00000018   8843               BICS     R0,R0,R1
   \   0000001A   2021               MOVS     R1,#+32
   \   0000001C   0143               ORRS     R1,R1,R0
   \   0000001E   ....               LDR      R0,??DataTable5  ;; 0xe01fc084
   \   00000020   0160               STR      R1,[R0, #+0]
     31            PLLFEED_bit.FEED = 0xAA; //更改设置
   \   00000022   2448               LDR      R0,??FrecInit_0  ;; 0xe01fc08c
   \   00000024   0068               LDR      R0,[R0, #+0]
   \   00000026   FF21               MOVS     R1,#+255
   \   00000028   8843               BICS     R0,R0,R1
   \   0000002A   AA21               MOVS     R1,#+170
   \   0000002C   0143               ORRS     R1,R1,R0
   \   0000002E   2148               LDR      R0,??FrecInit_0  ;; 0xe01fc08c

⌨️ 快捷键说明

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