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

📄 sysinit.lst

📁 Cortex-M4+example
💻 LST
📖 第 1 页 / 共 3 页
字号:
   \   0000000E   D2B2               UXTB     R2,R2            ;; ZeroExt  R2,R2,#+24,#+24
   \   00000010   102A               CMP      R2,#+16
   \   00000012   01D3               BCC.N    ??pll_init_2
   \   00000014   0120               MOVS     R0,#+1
   \   00000016   6DE0               B.N      ??pll_init_1
     85              
     86              //这里处在默认的FEI模式
     87              //首先移动到FBE模式
     88              #if (defined(K60_CLK) || defined(ASB817))
     89                       MCG_C2 = 0;
   \                     ??pll_init_2:
   \   00000018   ....               LDR.N    R2,??DataTable3_9  ;; 0x40064001
   \   0000001A   0023               MOVS     R3,#+0
   \   0000001C   1370               STRB     R3,[R2, #+0]
     90              #else
     91                       //使能外部晶振
     92                       MCG_C2 = MCG_C2_RANGE(2) | MCG_C2_HGO_MASK | MCG_C2_EREFS_MASK;
     93              #endif
     94              
     95              //初始化晶振后释放锁定状态的振荡器和GPIO
     96              SIM_SCGC4 |= SIM_SCGC4_LLWU_MASK;
   \   0000001E   ....               LDR.N    R2,??DataTable3_10  ;; 0x40048034
   \   00000020   1268               LDR      R2,[R2, #+0]
   \   00000022   52F08052           ORRS     R2,R2,#0x10000000
   \   00000026   ....               LDR.N    R3,??DataTable3_10  ;; 0x40048034
   \   00000028   1A60               STR      R2,[R3, #+0]
     97              LLWU_CS |= LLWU_CS_ACKISO_MASK;
   \   0000002A   ....               LDR.N    R2,??DataTable3_11  ;; 0x4007c008
   \   0000002C   1278               LDRB     R2,[R2, #+0]
   \   0000002E   52F08002           ORRS     R2,R2,#0x80
   \   00000032   ....               LDR.N    R3,??DataTable3_11  ;; 0x4007c008
   \   00000034   1A70               STRB     R2,[R3, #+0]
     98              
     99              //选择外部晶振,参考分频器,清IREFS来启动外部晶振
    100              MCG_C1 = MCG_C1_CLKS(2) | MCG_C1_FRDIV(3);
   \   00000036   ....               LDR.N    R2,??DataTable3_12  ;; 0x40064000
   \   00000038   9823               MOVS     R3,#+152
   \   0000003A   1370               STRB     R3,[R2, #+0]
    101              
    102              //等待晶振稳定	
    103              #if (!defined(K60_CLK) && !defined(ASB817))
    104              while (!(MCG_S & MCG_S_OSCINIT_MASK)){};  
    105              #endif
    106              
    107              //等待参考时钟状态位清零
    108              while (MCG_S & MCG_S_IREFST_MASK){}; 
   \                     ??pll_init_3:
   \   0000003C   ....               LDR.N    R2,??DataTable3_13  ;; 0x40064006
   \   0000003E   1278               LDRB     R2,[R2, #+0]
   \   00000040   D206               LSLS     R2,R2,#+27
   \   00000042   FBD4               BMI.N    ??pll_init_3
    109              //等待时钟状态位显示时钟源来自外部参考时钟
    110              while (((MCG_S & MCG_S_CLKST_MASK) >> MCG_S_CLKST_SHIFT) != 0x2){}; 
   \                     ??pll_init_4:
   \   00000044   ....               LDR.N    R2,??DataTable3_13  ;; 0x40064006
   \   00000046   1278               LDRB     R2,[R2, #+0]
   \   00000048   C2F38102           UBFX     R2,R2,#+2,#+2
   \   0000004C   D2B2               UXTB     R2,R2            ;; ZeroExt  R2,R2,#+24,#+24
   \   0000004E   022A               CMP      R2,#+2
   \   00000050   F8D1               BNE.N    ??pll_init_4
    111              
    112              //进入FBE模式
    113              #if (defined(K60_CLK))
    114              MCG_C5 = MCG_C5_PRDIV(0x18);
   \   00000052   ....               LDR.N    R2,??DataTable3_14  ;; 0x40064004
   \   00000054   1823               MOVS     R3,#+24
   \   00000056   1370               STRB     R3,[R2, #+0]
    115              #else
    116              
    117              //配置PLL分频器来匹配所用的晶振
    118              MCG_C5 = MCG_C5_PRDIV(crystal_val); 
    119              #endif
    120              
    121              //确保MCG_C6处于复位状态,禁止LOLIE、PLL、和时钟控制器,清PLL VCO分频器
    122              MCG_C6 = 0x0;
   \   00000058   ....               LDR.N    R2,??DataTable3_15  ;; 0x40064005
   \   0000005A   0023               MOVS     R3,#+0
   \   0000005C   1370               STRB     R3,[R2, #+0]
    123              //选择PLL VCO分频器,系统时钟分频器取决于时钟选项
    124              switch (clk_option) {
   \   0000005E   C0B2               UXTB     R0,R0            ;; ZeroExt  R0,R0,#+24,#+24
   \   00000060   0028               CMP      R0,#+0
   \   00000062   05D0               BEQ.N    ??pll_init_5
   \   00000064   0228               CMP      R0,#+2
   \   00000066   19D0               BEQ.N    ??pll_init_6
   \   00000068   0DD3               BCC.N    ??pll_init_7
   \   0000006A   0328               CMP      R0,#+3
   \   0000006C   21D0               BEQ.N    ??pll_init_8
   \   0000006E   2AE0               B.N      ??pll_init_9
    125              case 0:
    126                //设置系统分频器
    127                //MCG=PLL, core = MCG, bus = MCG, FlexBus = MCG, Flash clock= MCG/2
    128                set_sys_dividers(0,0,0,1);
   \                     ??pll_init_5:
   \   00000070   0123               MOVS     R3,#+1
   \   00000072   0022               MOVS     R2,#+0
   \   00000074   0021               MOVS     R1,#+0
   \   00000076   0020               MOVS     R0,#+0
   \   00000078   ........           BL       set_sys_dividers
    129                //设置VCO分频器,使能PLL为50MHz, LOLIE=0, PLLS=1, CME=0, VDIV=1
    130                MCG_C6 = MCG_C6_PLLS_MASK | MCG_C6_VDIV(1); //VDIV = 1 (x25)
   \   0000007C   ....               LDR.N    R0,??DataTable3_15  ;; 0x40064005
   \   0000007E   4121               MOVS     R1,#+65
   \   00000080   0170               STRB     R1,[R0, #+0]
    131                pll_freq = 50;
   \   00000082   3221               MOVS     R1,#+50
    132                break;
   \   00000084   1FE0               B.N      ??pll_init_9
    133              case 1:
    134                //设置系统分频器
    135                //MCG=PLL, core = MCG, bus = MCG/2, FlexBus = MCG/2, Flash clock= MCG/4
    136                set_sys_dividers(0,1,1,3);
   \                     ??pll_init_7:
   \   00000086   0323               MOVS     R3,#+3
   \   00000088   0122               MOVS     R2,#+1
   \   0000008A   0121               MOVS     R1,#+1
   \   0000008C   0020               MOVS     R0,#+0
   \   0000008E   ........           BL       set_sys_dividers
    137                //设置VCO分频器,使能PLL为100MHz, LOLIE=0, PLLS=1, CME=0, VDIV=26
    138                MCG_C6 = MCG_C6_PLLS_MASK | MCG_C6_VDIV(26); //VDIV = 26 (x50)
   \   00000092   ....               LDR.N    R0,??DataTable3_15  ;; 0x40064005
   \   00000094   5A21               MOVS     R1,#+90
   \   00000096   0170               STRB     R1,[R0, #+0]
    139                pll_freq = 100;
   \   00000098   6421               MOVS     R1,#+100
    140                break;
   \   0000009A   14E0               B.N      ??pll_init_9
    141              case 2:
    142                //设置系统分频器
    143                //MCG=PLL, core = MCG, bus = MCG/2, FlexBus = MCG/2, Flash clock= MCG/4
    144                set_sys_dividers(0,1,1,3);
   \                     ??pll_init_6:
   \   0000009C   0323               MOVS     R3,#+3
   \   0000009E   0122               MOVS     R2,#+1
   \   000000A0   0121               MOVS     R1,#+1
   \   000000A2   0020               MOVS     R0,#+0
   \   000000A4   ........           BL       set_sys_dividers
    145                //设置VCO分频器,使能PLL为96MHz, LOLIE=0, PLLS=1, CME=0, VDIV=24
    146                MCG_C6 = MCG_C6_PLLS_MASK | MCG_C6_VDIV(24); //VDIV = 24 (x48)
   \   000000A8   ....               LDR.N    R0,??DataTable3_15  ;; 0x40064005
   \   000000AA   5821               MOVS     R1,#+88
   \   000000AC   0170               STRB     R1,[R0, #+0]
    147                pll_freq = 96;
   \   000000AE   6021               MOVS     R1,#+96
    148                break;
   \   000000B0   09E0               B.N      ??pll_init_9
    149              case 3:
    150                //设置系统分频器
    151                //MCG=PLL, core = MCG, bus = MCG, FlexBus = MCG, Flash clock= MCG/2
    152                set_sys_dividers(0,0,0,1);
   \                     ??pll_init_8:
   \   000000B2   0123               MOVS     R3,#+1
   \   000000B4   0022               MOVS     R2,#+0
   \   000000B6   0021               MOVS     R1,#+0
   \   000000B8   0020               MOVS     R0,#+0
   \   000000BA   ........           BL       set_sys_dividers
    153                //设置VCO分频器,使能PLL为48MHz, LOLIE=0, PLLS=1, CME=0, VDIV=0
    154                MCG_C6 = MCG_C6_PLLS_MASK; //VDIV = 0 (x24)
   \   000000BE   ....               LDR.N    R0,??DataTable3_15  ;; 0x40064005
   \   000000C0   4021               MOVS     R1,#+64
   \   000000C2   0170               STRB     R1,[R0, #+0]
    155                pll_freq = 48;
   \   000000C4   3021               MOVS     R1,#+48
    156                break;
    157              }
    158              while (!(MCG_S & MCG_S_PLLST_MASK)){}; // wait for PLL status bit to set
   \                     ??pll_init_9:
   \   000000C6   ....               LDR.N    R0,??DataTable3_13  ;; 0x40064006
   \   000000C8   0078               LDRB     R0,[R0, #+0]
   \   000000CA   8006               LSLS     R0,R0,#+26
   \   000000CC   FBD5               BPL.N    ??pll_init_9
    159              
    160              while (!(MCG_S & MCG_S_LOCK_MASK)){}; // Wait for LOCK bit to set
   \                     ??pll_init_10:
   \   000000CE   ....               LDR.N    R0,??DataTable3_13  ;; 0x40064006
   \   000000D0   0078               LDRB     R0,[R0, #+0]
   \   000000D2   4006               LSLS     R0,R0,#+25
   \   000000D4   FBD5               BPL.N    ??pll_init_10
    161              
    162              //进入PBE模式
    163              
    164              //通过清零CLKS位来进入PEE模式
    165              // CLKS=0, FRDIV=3, IREFS=0, IRCLKEN=0, IREFSTEN=0
    166              MCG_C1 &= ~MCG_C1_CLKS_MASK;
   \   000000D6   ....               LDR.N    R0,??DataTable3_12  ;; 0x40064000
   \   000000D8   0078               LDRB     R0,[R0, #+0]
   \   000000DA   10F03F00           ANDS     R0,R0,#0x3F
   \   000000DE   ....               LDR.N    R2,??DataTable3_12  ;; 0x40064000
   \   000000E0   1070               STRB     R0,[R2, #+0]
    167              
    168              //等待时钟状态位更新
    169              while (((MCG_S & MCG_S_CLKST_MASK) >> MCG_S_CLKST_SHIFT) != 0x3){};
   \                     ??pll_init_11:
   \   000000E2   ....               LDR.N    R0,??DataTable3_13  ;; 0x40064006
   \   000000E4   0078               LDRB     R0,[R0, #+0]
   \   000000E6   C0F38100           UBFX     R0,R0,#+2,#+2
   \   000000EA   C0B2               UXTB     R0,R0            ;; ZeroExt  R0,R0,#+24,#+24
   \   000000EC   0328               CMP      R0,#+3
   \   000000EE   F8D1               BNE.N    ??pll_init_11
    170              
    171              //开始进入PEE模式
    172              

⌨️ 快捷键说明

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