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

📄 lpc_main.lst

📁 用于ZLG的EasyARM LPC22系列开发板的IAR代码,绝对原创,可以直接使用ZLG开发板+H-JTAG调试,仿ZLG代码风格.欢迎拍砖~
💻 LST
📖 第 1 页 / 共 2 页
字号:
##############################################################################
#                                                                            #
# IAR ARM ANSI C/C++ Compiler V4.40A/W32 EVALUATION    05/Apr/2008  02:54:34 #
# Copyright 1999-2005 IAR Systems. All rights reserved.                      #
#                                                                            #
#    Cpu mode        =  arm                                                  #
#    Endian          =  little                                               #
#    Stack alignment =  4                                                    #
#    Source file     =  E:\Projects\IAR\LPC2210\LPC_Main.c                   #
#    Command line    =  E:\Projects\IAR\LPC2210\LPC_Main.c -lC               #
#                       E:\Projects\IAR\LPC2210\xFLASH\List\ -o              #
#                       E:\Projects\IAR\LPC2210\xFLASH\Obj\ -z3 --no_cse     #
#                       --no_unroll --no_inline --no_code_motion --no_tbaa   #
#                       --no_clustering --no_scheduling --debug --cpu_mode   #
#                       arm --endian little --cpu ARM7TDMI-S --stack_align   #
#                       4 -e --fpu None --dlib_config "d:\Program            #
#                       Files\ARM\EWARM\ARM\LIB\dl4tpannl8n.h" -I            #
#                       "d:\Program Files\ARM\EWARM\ARM\INC\"                #
#    List file       =  E:\Projects\IAR\LPC2210\xFLASH\List\LPC_Main.lst     #
#    Object file     =  E:\Projects\IAR\LPC2210\xFLASH\Obj\LPC_Main.r79      #
#                                                                            #
#                                                                            #
##############################################################################

E:\Projects\IAR\LPC2210\LPC_Main.c
      1          //这一段无需改动
      2          #ifndef TRUE
      3          #define TRUE  1
      4          #endif
      5          
      6          #ifndef FALSE
      7          #define FALSE 0
      8          #endif
      9          
     10          typedef unsigned char  uint8;                   /* 无符号8位整型变量                        */
     11          typedef signed   char  int8;                    /* 有符号8位整型变量                        */
     12          typedef unsigned short uint16;                  /* 无符号16位整型变量                       */
     13          typedef signed   short int16;                   /* 有符号16位整型变量                       */
     14          typedef unsigned int   uint32;                  /* 无符号32位整型变量                       */
     15          typedef signed   int   int32;                   /* 有符号32位整型变量                       */
     16          typedef float          fp32;                    /* 单精度浮点数(32位长度)                 */
     17          typedef double         fp64;                    /* 双精度浮点数(64位长度)                 */
     18          
     19          #include <iolpc2124.h>

   \                                 In segment DATA_AN, at 0xe01fc080
   \   union <unnamed> volatile __data _A_PLLCON
   \                     _A_PLLCON:
   \   00000000                      DS8 4

   \                                 In segment DATA_AN, at 0xe01fc084
   \   union <unnamed> volatile __data _A_PLLCFG
   \                     _A_PLLCFG:
   \   00000000                      DS8 4

   \                                 In segment DATA_AN, at 0xe01fc088
   \   union <unnamed> const volatile __data _A_PLLSTAT
   \                     _A_PLLSTAT:
   \   00000000                      DS8 4

   \                                 In segment DATA_AN, at 0xe01fc08c
   \   union <unnamed> volatile __data _A_PLLFEED
   \                     _A_PLLFEED:
   \   00000000                      DS8 4

   \                                 In segment DATA_AN, at 0xe01fc100
   \   union <unnamed> volatile __data _A_VPBDIV
   \                     _A_VPBDIV:
   \   00000000                      DS8 4

   \                                 In segment DATA_AN, at 0xe01fc000
   \   union <unnamed> volatile __data _A_MAMCR
   \                     _A_MAMCR:
   \   00000000                      DS8 4

   \                                 In segment DATA_AN, at 0xe01fc004
   \   union <unnamed> volatile __data _A_MAMTIM
   \                     _A_MAMTIM:
   \   00000000                      DS8 4

   \                                 In segment DATA_AN, at 0xfffff00c
   \   union <unnamed> volatile __data _A_VICIntSelect
   \                     _A_VICIntSelect:
   \   00000000                      DS8 4

   \                                 In segment DATA_AN, at 0xfffff014
   \   union <unnamed> volatile __data _A_VICIntEnClear
   \                     _A_VICIntEnClear:
   \   00000000                      DS8 4

   \                                 In segment DATA_AN, at 0xfffff030
   \   unsigned long volatile __data VICVectAddr
   \                     VICVectAddr:
   \   00000000                      DS8 4

   \                                 In segment DATA_AN, at 0xe002c000
   \   union <unnamed> volatile __data _A_PINSEL0
   \                     _A_PINSEL0:
   \   00000000                      DS8 4

   \                                 In segment DATA_AN, at 0xe0028004
   \   union <unnamed> volatile __data _A_IO0SET
   \                     _A_IO0SET:
   \   00000000                      DS8 4

   \                                 In segment DATA_AN, at 0xe0028008
   \   union <unnamed> volatile __data _A_IO0DIR
   \                     _A_IO0DIR:
   \   00000000                      DS8 4

   \                                 In segment DATA_AN, at 0xe002800c
   \   union <unnamed> volatile __data _A_IO0CLR
   \                     _A_IO0CLR:
   \   00000000                      DS8 4
     20          
     21          
     22          /* 系统设置, Fosc、Fcclk、Fcco、Fpclk必须定义*/
     23          #define Fosc            11059200                    //晶振频率,10MHz~25MHz,应当与实际一至
     24          #define Fcclk           (Fosc * 4)                  //系统频率,必须为Fosc的整数倍(1~32),且<=60MHZ
     25          #define Fcco            (Fcclk * 4)                 //CCO频率,必须为Fcclk的2、4、8、16倍,范围为156MHz~320MHz
     26          #define Fpclk           (Fcclk / 4) * 1             //VPB时钟频率,只能为(Fcclk / 4)的1 ~ 4倍
     27          

   \                                 In segment CODE, align 4, keep-with-next
     28          void TargetResetInit(void)
     29          {
     30          #ifdef __DEBUG    
     31              MEMMAP = 0x3;                   //remap
     32          #endif
     33          
     34          #ifdef __xFLASH    
     35              MEMMAP = 0x3;                   //remap
     36          #endif
     37          
     38          #ifdef __IN_CHIP    
     39              MEMMAP = 0x1;                   //remap
     40          #endif
     41          /**/
     42          /* 设置系统各部分时钟 */
     43              PLLCON = 1;                 //激活PLL
   \                     TargetResetInit:
   \   00000000   CC009FE5           LDR      R0,??TargetResetInit_0  ;; 0xe01fc080
   \   00000004   0110A0E3           MOV      R1,#+1
   \   00000008   001080E5           STR      R1,[R0, #+0]
     44                                          //以下为计算M值
     45          #if (Fpclk / (Fcclk / 4)) == 1
     46              VPBDIV = 0;
   \   0000000C   C4009FE5           LDR      R0,??TargetResetInit_0+0x4  ;; 0xe01fc100
   \   00000010   0010A0E3           MOV      R1,#+0
   \   00000014   001080E5           STR      R1,[R0, #+0]
     47          #endif
     48          #if (Fpclk / (Fcclk / 4)) == 2
     49              VPBDIV = 2;
     50          #endif
     51          #if (Fpclk / (Fcclk / 4)) == 4
     52              VPBDIV = 1;
     53          #endif
     54                                          //以下为计算P值
     55          #if (Fcco / Fcclk) == 2
     56              PLLCFG = ((Fcclk / Fosc) - 1) | (0 << 5);
     57          #endif
     58          #if (Fcco / Fcclk) == 4
     59              PLLCFG = ((Fcclk / Fosc) - 1) | (1 << 5);
   \   00000018   BC009FE5           LDR      R0,??TargetResetInit_0+0x8  ;; 0xe01fc084
   \   0000001C   2310A0E3           MOV      R1,#+35
   \   00000020   001080E5           STR      R1,[R0, #+0]
     60          #endif
     61          #if (Fcco / Fcclk) == 8
     62              PLLCFG = ((Fcclk / Fosc) - 1) | (2 << 5);
     63          #endif
     64          #if (Fcco / Fcclk) == 16
     65              PLLCFG = ((Fcclk / Fosc) - 1) | (3 << 5);
     66          #endif
     67              PLLFEED = 0xaa;                     //更改设置
   \   00000024   B4009FE5           LDR      R0,??TargetResetInit_0+0xC  ;; 0xe01fc08c
   \   00000028   AA10A0E3           MOV      R1,#+170
   \   0000002C   001080E5           STR      R1,[R0, #+0]
     68              PLLFEED = 0x55;
   \   00000030   A8009FE5           LDR      R0,??TargetResetInit_0+0xC  ;; 0xe01fc08c
   \   00000034   5510A0E3           MOV      R1,#+85
   \   00000038   001080E5           STR      R1,[R0, #+0]
     69              
     70              while((PLLSTAT & (1 << 10)) == 0);  //等待频率锁定
   \                     ??TargetResetInit_1:
   \   0000003C   A0009FE5           LDR      R0,??TargetResetInit_0+0x10  ;; 0xe01fc088
   \   00000040   000090E5           LDR      R0,[R0, #+0]
   \   00000044   400E10E3           TST      R0,#0x400
   \   00000048   FBFFFF0A           BEQ      ??TargetResetInit_1
     71              PLLCON = 3;                         //连接PLL
   \   0000004C   80009FE5           LDR      R0,??TargetResetInit_0  ;; 0xe01fc080
   \   00000050   0310A0E3           MOV      R1,#+3
   \   00000054   001080E5           STR      R1,[R0, #+0]
     72              
     73              PLLFEED = 0xaa;                     //更改设置
   \   00000058   80009FE5           LDR      R0,??TargetResetInit_0+0xC  ;; 0xe01fc08c
   \   0000005C   AA10A0E3           MOV      R1,#+170
   \   00000060   001080E5           STR      R1,[R0, #+0]
     74              PLLFEED = 0x55;
   \   00000064   74009FE5           LDR      R0,??TargetResetInit_0+0xC  ;; 0xe01fc08c
   \   00000068   5510A0E3           MOV      R1,#+85
   \   0000006C   001080E5           STR      R1,[R0, #+0]
     75              
     76              /* 设置存储器加速模块 */
     77              MAMCR = 0;
   \   00000070   E004A0E3           MOV      R0,#-536870912
   \   00000074   7F0980E3           ORR      R0,R0,#0x1FC000
   \   00000078   0010A0E3           MOV      R1,#+0
   \   0000007C   001080E5           STR      R1,[R0, #+0]
     78          #if Fcclk < 20000000
     79              MAMTIM = 1;
     80          #else
     81          #if Fcclk < 40000000
     82              MAMTIM = 2;
     83          #else
     84              MAMTIM = 3;
   \   00000080   4E02A0E3           MOV      R0,#-536870908
   \   00000084   7F0980E3           ORR      R0,R0,#0x1FC000
   \   00000088   0310A0E3           MOV      R1,#+3
   \   0000008C   001080E5           STR      R1,[R0, #+0]
     85          #endif
     86          #endif
     87              MAMCR = 2;
   \   00000090   E004A0E3           MOV      R0,#-536870912
   \   00000094   7F0980E3           ORR      R0,R0,#0x1FC000
   \   00000098   0210A0E3           MOV      R1,#+2
   \   0000009C   001080E5           STR      R1,[R0, #+0]
     88              
     89              /* 初始化VIC */
     90              VICIntEnClear = 0xffffffff;
   \   000000A0   EB00E0E3           MVN      R0,#+235
   \   000000A4   F00EC0E3           BIC      R0,R0,#0xF00
   \   000000A8   0010E0E3           MVN      R1,#+0
   \   000000AC   001080E5           STR      R1,[R0, #+0]
     91              VICVectAddr = 0;
   \   000000B0   CF00E0E3           MVN      R0,#+207
   \   000000B4   F00EC0E3           BIC      R0,R0,#0xF00
   \   000000B8   0010A0E3           MOV      R1,#+0

⌨️ 快捷键说明

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