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

📄 sysinit.lst

📁 Cortex-M4+example
💻 LST
📖 第 1 页 / 共 3 页
字号:
###############################################################################
#                                                                             #
# IAR ANSI C/C++ Compiler V6.40.1.53790/W32 for ARM     09/Aug/2012  10:07:33 #
# Copyright 1999-2012 IAR Systems AB.                                         #
#                                                                             #
#    Cpu mode     =  thumb                                                    #
#    Endian       =  little                                                   #
#    Source file  =  C:\Users\305030973\Desktop\M4                            #
#                    example\01_light\src\Sources\C\Frame_C\sysinit.c         #
#    Command line =  "C:\Users\305030973\Desktop\M4                           #
#                    example\01_light\src\Sources\C\Frame_C\sysinit.c" -D     #
#                    IAR -D TWR_K60N512 -lCN "C:\Users\305030973\Desktop\M4   #
#                    example\01_light\bin\Flash\List\" -lB                    #
#                    "C:\Users\305030973\Desktop\M4                           #
#                    example\01_light\bin\Flash\List\" -o                     #
#                    "C:\Users\305030973\Desktop\M4                           #
#                    example\01_light\bin\Flash\Obj\" --no_cse --no_unroll    #
#                    --no_inline --no_code_motion --no_tbaa --no_clustering   #
#                    --no_scheduling --debug --endian=little --cpu=Cortex-M4  #
#                    -e --fpu=None --dlib_config "C:\Program Files\IAR        #
#                    Systems\Embedded Workbench 6.4_2\arm\INC\c\DLib_Config_N #
#                    ormal.h" -I "C:\Users\305030973\Desktop\M4               #
#                    example\01_light\src\Sources\H\" -I                      #
#                    "C:\Users\305030973\Desktop\M4                           #
#                    example\01_light\src\Sources\H\Component_H\" -I          #
#                    "C:\Users\305030973\Desktop\M4                           #
#                    example\01_light\src\Sources\H\Frame_H\" -I "C:\Program  #
#                    Files\IAR Systems\Embedded Workbench 6.4_2\arm\INC\" -I  #
#                    "C:\Program Files\IAR Systems\Embedded Workbench         #
#                    6.4_2\arm\INC\CLIB\" -Ol --use_c++_inline                #
#    List file    =  C:\Users\305030973\Desktop\M4                            #
#                    example\01_light\bin\Flash\List\sysinit.lst              #
#    Object file  =  C:\Users\305030973\Desktop\M4                            #
#                    example\01_light\bin\Flash\Obj\sysinit.o                 #
#                                                                             #
#                                                                             #
###############################################################################

C:\Users\305030973\Desktop\M4 example\01_light\src\Sources\C\Frame_C\sysinit.c
      1          //-------------------------------------------------------------------------*
      2          // 文件名:sysinit.c                                                        *
      3          // 说  明: 系统配置文件                                                    *
      4          //-------------------------------------------------------------------------*
      5          
      6          #include "sysinit.h"	//头文件
      7          
      8          //全局变量声明

   \                                 In section .bss, align 4
      9          int core_clk_khz;
   \                     core_clk_khz:
   \   00000000                      DS8 4

   \                                 In section .bss, align 4
     10          int core_clk_mhz;
   \                     core_clk_mhz:
   \   00000000                      DS8 4

   \                                 In section .bss, align 4
     11          int periph_clk_khz;
   \                     periph_clk_khz:
   \   00000000                      DS8 4
     12          
     13          //-------------------------------------------------------------------------*
     14          //函数名: sysinit                                                          *
     15          //功  能: 系统设置                                                         * 
     16          //参  数: 无						  	           *	
     17          //返  回: 无                                                               *
     18          //说  明: 无                                                               *
     19          //-------------------------------------------------------------------------*

   \                                 In section .text, align 2, keep-with-next
     20          void sysinit (void)
     21          {
   \                     sysinit:
   \   00000000   0xB580             PUSH     {R7,LR}
     22              //使能IO端口时钟    
     23              SIM_SCGC5 |= (SIM_SCGC5_PORTA_MASK
     24                                        | SIM_SCGC5_PORTB_MASK
     25                                        | SIM_SCGC5_PORTC_MASK
     26                                        | SIM_SCGC5_PORTD_MASK
     27                                        | SIM_SCGC5_PORTE_MASK );
   \   00000002   0x....             LDR.N    R0,??DataTable3  ;; 0x40048038
   \   00000004   0x6800             LDR      R0,[R0, #+0]
   \   00000006   0xF450 0x5078      ORRS     R0,R0,#0x3E00
   \   0000000A   0x....             LDR.N    R1,??DataTable3  ;; 0x40048038
   \   0000000C   0x6008             STR      R0,[R1, #+0]
     28          
     29              //开启系统时钟
     30              core_clk_mhz = pll_init(CORE_CLK_MHZ, REF_CLK);
   \   0000000E   0x2103             MOVS     R1,#+3
   \   00000010   0x2002             MOVS     R0,#+2
   \   00000012   0x.... 0x....      BL       pll_init
   \   00000016   0x....             LDR.N    R1,??DataTable3_1
   \   00000018   0x6008             STR      R0,[R1, #+0]
     31              //通过pll_init函数的返回值来计算内核时钟和外设时钟
     32              core_clk_khz = core_clk_mhz * 1000;
   \   0000001A   0x....             LDR.N    R0,??DataTable3_1
   \   0000001C   0x6800             LDR      R0,[R0, #+0]
   \   0000001E   0xF44F 0x717A      MOV      R1,#+1000
   \   00000022   0x4348             MULS     R0,R1,R0
   \   00000024   0x....             LDR.N    R1,??DataTable3_2
   \   00000026   0x6008             STR      R0,[R1, #+0]
     33              periph_clk_khz = core_clk_khz / (((SIM_CLKDIV1 & SIM_CLKDIV1_OUTDIV2_MASK) >> 24)+ 1);
   \   00000028   0x....             LDR.N    R0,??DataTable3_2
   \   0000002A   0x6800             LDR      R0,[R0, #+0]
   \   0000002C   0x....             LDR.N    R1,??DataTable3_3  ;; 0x40048044
   \   0000002E   0x6809             LDR      R1,[R1, #+0]
   \   00000030   0xF3C1 0x6103      UBFX     R1,R1,#+24,#+4
   \   00000034   0x1C49             ADDS     R1,R1,#+1
   \   00000036   0xFBB0 0xF0F1      UDIV     R0,R0,R1
   \   0000003A   0x....             LDR.N    R1,??DataTable3_4
   \   0000003C   0x6008             STR      R0,[R1, #+0]
     34              //使能跟踪时钟,用于调试
     35              trace_clk_init();	
   \   0000003E   0x.... 0x....      BL       trace_clk_init
     36              //FlexBus时钟初始化
     37              fb_clk_init();
   \   00000042   0x.... 0x....      BL       fb_clk_init
     38          
     39          }
   \   00000046   0xBD01             POP      {R0,PC}          ;; return
     40          
     41          //-------------------------------------------------------------------------*
     42          //函数名: trace_clk_init                                                   *
     43          //功  能: 跟踪时钟初始化                                                   * 
     44          //参  数: 无							  	   *	
     45          //返  回: 无                                                               *
     46          //说  明: 用于调试                                                         *
     47          //-------------------------------------------------------------------------*

   \                                 In section .text, align 2, keep-with-next
     48          void trace_clk_init(void)
     49          {
     50              //设置跟踪时钟为内核时钟
     51              SIM_SOPT2 |= SIM_SOPT2_TRACECLKSEL_MASK;	
   \                     trace_clk_init:
   \   00000000   0x....             LDR.N    R0,??DataTable3_5  ;; 0x40048004
   \   00000002   0x6800             LDR      R0,[R0, #+0]
   \   00000004   0xF450 0x5080      ORRS     R0,R0,#0x1000
   \   00000008   0x....             LDR.N    R1,??DataTable3_5  ;; 0x40048004
   \   0000000A   0x6008             STR      R0,[R1, #+0]
     52              //在PTA6引脚上使能TRACE_CLKOU功能
     53              PORTA_PCR6 = ( PORT_PCR_MUX(0x7));
   \   0000000C   0x....             LDR.N    R0,??DataTable3_6  ;; 0x40049018
   \   0000000E   0xF44F 0x61E0      MOV      R1,#+1792
   \   00000012   0x6001             STR      R1,[R0, #+0]
     54          }
   \   00000014   0x4770             BX       LR               ;; return
     55          
     56          //-------------------------------------------------------------------------*
     57          //函数名: fb_clk_init                                                      *
     58          //功  能: FlexBus时钟初始化                                                * 
     59          //参  数: 无								   *	
     60          //返  回: 无                                                               *
     61          //说  明:                                                                  *
     62          //-------------------------------------------------------------------------*

   \                                 In section .text, align 2, keep-with-next
     63          void fb_clk_init(void)
     64          {
     65              //使能FlexBus模块时钟
     66              SIM_SCGC7 |= SIM_SCGC7_FLEXBUS_MASK;
   \                     fb_clk_init:
   \   00000000   0x....             LDR.N    R0,??DataTable3_7  ;; 0x40048040
   \   00000002   0x6800             LDR      R0,[R0, #+0]
   \   00000004   0xF050 0x0001      ORRS     R0,R0,#0x1
   \   00000008   0x....             LDR.N    R1,??DataTable3_7  ;; 0x40048040
   \   0000000A   0x6008             STR      R0,[R1, #+0]
     67              //在PTA6引脚上使能FB_CLKOUT功能
     68              PORTC_PCR3 = ( PORT_PCR_MUX(0x5));
   \   0000000C   0x....             LDR.N    R0,??DataTable3_8  ;; 0x4004b00c
   \   0000000E   0xF44F 0x61A0      MOV      R1,#+1280
   \   00000012   0x6001             STR      R1,[R0, #+0]
     69          }
   \   00000014   0x4770             BX       LR               ;; return
     70          
     71          //-------------------------------------------------------------------------*
     72          //函数名: pll_init                                                         *
     73          //功  能: pll初始化                                                        * 
     74          //参  数: clk_option:时钟选项						   * 
     75          //		  crystal_val:时钟值                                       *	
     76          //返  回: 时钟频率值                                                       *
     77          //说  明:                                                                  *
     78          //-------------------------------------------------------------------------*

   \                                 In section .text, align 2, keep-with-next
     79          unsigned char pll_init(unsigned char clk_option, unsigned char crystal_val)
     80          {
   \                     pll_init:
   \   00000000   0xB580             PUSH     {R7,LR}
   \   00000002   0x000A             MOVS     R2,R1
     81              unsigned char pll_freq;
     82              
     83              if (clk_option > 3) {return 0;}   //如果没有选择可用的选项则返回0
   \   00000004   0xB2C0             UXTB     R0,R0            ;; ZeroExt  R0,R0,#+24,#+24
   \   00000006   0x2804             CMP      R0,#+4
   \   00000008   0xD301             BCC.N    ??pll_init_0
   \   0000000A   0x2000             MOVS     R0,#+0
   \   0000000C   0xE072             B.N      ??pll_init_1
     84              if (crystal_val > 15) {return 1;} // 如果如果可用的晶体选项不可用则返回1
   \                     ??pll_init_0:
   \   0000000E   0xB2D2             UXTB     R2,R2            ;; ZeroExt  R2,R2,#+24,#+24

⌨️ 快捷键说明

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