亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sysinit.c

?? Cortex-M4+example
?? C
字號:
//-------------------------------------------------------------------------*
// 文件名:sysinit.c                                                        *
// 說  明: 系統配置文件                                                    *
//-------------------------------------------------------------------------*

#include "sysinit.h"	//頭文件

//全局變量聲明
int core_clk_khz;
int core_clk_mhz;
int periph_clk_khz;

//-------------------------------------------------------------------------*
//函數名: sysinit                                                          *
//功  能: 系統設置                                                         * 
//參  數: 無						  	           *	
//返  回: 無                                                               *
//說  明: 無                                                               *
//-------------------------------------------------------------------------*
void sysinit (void)
{
    //使能IO端口時鐘    
    SIM_SCGC5 |= (SIM_SCGC5_PORTA_MASK
                              | SIM_SCGC5_PORTB_MASK
                              | SIM_SCGC5_PORTC_MASK
                              | SIM_SCGC5_PORTD_MASK
                              | SIM_SCGC5_PORTE_MASK );

    //開啟系統時鐘
    core_clk_mhz = pll_init(CORE_CLK_MHZ, REF_CLK);
    //通過pll_init函數的返回值來計算內核時鐘和外設時鐘
    core_clk_khz = core_clk_mhz * 1000;
    periph_clk_khz = core_clk_khz / (((SIM_CLKDIV1 & SIM_CLKDIV1_OUTDIV2_MASK) >> 24)+ 1);
    //使能跟蹤時鐘,用于調試
    trace_clk_init();	
    //FlexBus時鐘初始化
    fb_clk_init();

}

//-------------------------------------------------------------------------*
//函數名: trace_clk_init                                                   *
//功  能: 跟蹤時鐘初始化                                                   * 
//參  數: 無							  	   *	
//返  回: 無                                                               *
//說  明: 用于調試                                                         *
//-------------------------------------------------------------------------*
void trace_clk_init(void)
{
    //設置跟蹤時鐘為內核時鐘
    SIM_SOPT2 |= SIM_SOPT2_TRACECLKSEL_MASK;	
    //在PTA6引腳上使能TRACE_CLKOU功能
    PORTA_PCR6 = ( PORT_PCR_MUX(0x7));
}

//-------------------------------------------------------------------------*
//函數名: fb_clk_init                                                      *
//功  能: FlexBus時鐘初始化                                                * 
//參  數: 無								   *	
//返  回: 無                                                               *
//說  明:                                                                  *
//-------------------------------------------------------------------------*
void fb_clk_init(void)
{
    //使能FlexBus模塊時鐘
    SIM_SCGC7 |= SIM_SCGC7_FLEXBUS_MASK;
    //在PTA6引腳上使能FB_CLKOUT功能
    PORTC_PCR3 = ( PORT_PCR_MUX(0x5));
}

//-------------------------------------------------------------------------*
//函數名: pll_init                                                         *
//功  能: pll初始化                                                        * 
//參  數: clk_option:時鐘選項						   * 
//		  crystal_val:時鐘值                                       *	
//返  回: 時鐘頻率值                                                       *
//說  明:                                                                  *
//-------------------------------------------------------------------------*
unsigned char pll_init(unsigned char clk_option, unsigned char crystal_val)
{
    unsigned char pll_freq;
    
    if (clk_option > 3) {return 0;}   //如果沒有選擇可用的選項則返回0
    if (crystal_val > 15) {return 1;} // 如果如果可用的晶體選項不可用則返回1
    
    //這里處在默認的FEI模式
    //首先移動到FBE模式
    #if (defined(K60_CLK) || defined(ASB817))
             MCG_C2 = 0;
    #else
             //使能外部晶振
             MCG_C2 = MCG_C2_RANGE(2) | MCG_C2_HGO_MASK | MCG_C2_EREFS_MASK;
    #endif
    
    //初始化晶振后釋放鎖定狀態的振蕩器和GPIO
    SIM_SCGC4 |= SIM_SCGC4_LLWU_MASK;
    LLWU_CS |= LLWU_CS_ACKISO_MASK;
    
    //選擇外部晶振,參考分頻器,清IREFS來啟動外部晶振
    MCG_C1 = MCG_C1_CLKS(2) | MCG_C1_FRDIV(3);
    
    //等待晶振穩定	
    #if (!defined(K60_CLK) && !defined(ASB817))
    while (!(MCG_S & MCG_S_OSCINIT_MASK)){};  
    #endif
    
    //等待參考時鐘狀態位清零
    while (MCG_S & MCG_S_IREFST_MASK){}; 
    //等待時鐘狀態位顯示時鐘源來自外部參考時鐘
    while (((MCG_S & MCG_S_CLKST_MASK) >> MCG_S_CLKST_SHIFT) != 0x2){}; 
    
    //進入FBE模式
    #if (defined(K60_CLK))
    MCG_C5 = MCG_C5_PRDIV(0x18);
    #else
    
    //配置PLL分頻器來匹配所用的晶振
    MCG_C5 = MCG_C5_PRDIV(crystal_val); 
    #endif
    
    //確保MCG_C6處于復位狀態,禁止LOLIE、PLL、和時鐘控制器,清PLL VCO分頻器
    MCG_C6 = 0x0;
    //選擇PLL VCO分頻器,系統時鐘分頻器取決于時鐘選項
    switch (clk_option) {
    case 0:
      //設置系統分頻器
      //MCG=PLL, core = MCG, bus = MCG, FlexBus = MCG, Flash clock= MCG/2
      set_sys_dividers(0,0,0,1);
      //設置VCO分頻器,使能PLL為50MHz, LOLIE=0, PLLS=1, CME=0, VDIV=1
      MCG_C6 = MCG_C6_PLLS_MASK | MCG_C6_VDIV(1); //VDIV = 1 (x25)
      pll_freq = 50;
      break;
    case 1:
      //設置系統分頻器
      //MCG=PLL, core = MCG, bus = MCG/2, FlexBus = MCG/2, Flash clock= MCG/4
      set_sys_dividers(0,1,1,3);
      //設置VCO分頻器,使能PLL為100MHz, LOLIE=0, PLLS=1, CME=0, VDIV=26
      MCG_C6 = MCG_C6_PLLS_MASK | MCG_C6_VDIV(26); //VDIV = 26 (x50)
      pll_freq = 100;
      break;
    case 2:
      //設置系統分頻器
      //MCG=PLL, core = MCG, bus = MCG/2, FlexBus = MCG/2, Flash clock= MCG/4
      set_sys_dividers(0,1,1,3);
      //設置VCO分頻器,使能PLL為96MHz, LOLIE=0, PLLS=1, CME=0, VDIV=24
      MCG_C6 = MCG_C6_PLLS_MASK | MCG_C6_VDIV(24); //VDIV = 24 (x48)
      pll_freq = 96;
      break;
    case 3:
      //設置系統分頻器
      //MCG=PLL, core = MCG, bus = MCG, FlexBus = MCG, Flash clock= MCG/2
      set_sys_dividers(0,0,0,1);
      //設置VCO分頻器,使能PLL為48MHz, LOLIE=0, PLLS=1, CME=0, VDIV=0
      MCG_C6 = MCG_C6_PLLS_MASK; //VDIV = 0 (x24)
      pll_freq = 48;
      break;
    }
    while (!(MCG_S & MCG_S_PLLST_MASK)){}; // wait for PLL status bit to set
    
    while (!(MCG_S & MCG_S_LOCK_MASK)){}; // Wait for LOCK bit to set
    
    //進入PBE模式
    
    //通過清零CLKS位來進入PEE模式
    // CLKS=0, FRDIV=3, IREFS=0, IRCLKEN=0, IREFSTEN=0
    MCG_C1 &= ~MCG_C1_CLKS_MASK;
    
    //等待時鐘狀態位更新
    while (((MCG_S & MCG_S_CLKST_MASK) >> MCG_S_CLKST_SHIFT) != 0x3){};
    
    //開始進入PEE模式
    
    return pll_freq;
}

//-------------------------------------------------------------------------*
//函數名: set_sys_dividers                                                 *
//功  能: 設置系系統分頻器                                                 * 
//參  數: 預分頻值   							   *	
//返  回: 無                                                               *
//說  明: 此函數必須放在RAM里執行,否則會產生錯誤e2448。當FLASH時鐘分頻改變* 
//        時,必須禁止FLASH的預取功能。在時鐘分頻改變之后,必須延時一小段時*
//	 間才可以從新使能預取功能。                                        * 
//-------------------------------------------------------------------------*
__ramfunc void set_sys_dividers(uint32 outdiv1, uint32 outdiv2, uint32 outdiv3, uint32 outdiv4)
{
    uint32 temp_reg;
    uint8 i;
    //保存FMC_PFAPR當前的值
    temp_reg = FMC_PFAPR;
    
    //通過M&PFD置位M0PFD來禁止預取功能
    FMC_PFAPR |= FMC_PFAPR_M7PFD_MASK | FMC_PFAPR_M6PFD_MASK | FMC_PFAPR_M5PFD_MASK
                     | FMC_PFAPR_M4PFD_MASK | FMC_PFAPR_M3PFD_MASK | FMC_PFAPR_M2PFD_MASK
                     | FMC_PFAPR_M1PFD_MASK | FMC_PFAPR_M0PFD_MASK;
    
    //給時鐘分頻器設置期望值  
    SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIV1(outdiv1) | SIM_CLKDIV1_OUTDIV2(outdiv2) 
                      | SIM_CLKDIV1_OUTDIV3(outdiv3) | SIM_CLKDIV1_OUTDIV4(outdiv4);
    
    //等待分頻器改變
    for (i = 0 ; i < outdiv4 ; i++)
    {}
    
    //從新存FMC_PFAPR的原始值
    FMC_PFAPR = temp_reg; 
    
    return;
}






?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人免费av| 久久久99精品免费观看| 亚洲综合成人在线视频| 欧美自拍偷拍午夜视频| 亚洲午夜久久久久中文字幕久| 色婷婷久久久亚洲一区二区三区| 亚洲免费av高清| 欧洲av一区二区嗯嗯嗯啊| 亚洲成人三级小说| 日韩免费看的电影| 国产99久久久精品| 日韩久久一区二区| 欧美伦理影视网| 另类成人小视频在线| 国产午夜精品一区二区| 91丝袜美腿高跟国产极品老师 | 日韩一级成人av| 国内精品视频666| 亚洲国产精品ⅴa在线观看| 成人精品高清在线| 性做久久久久久免费观看| 精品日韩99亚洲| 成人黄色软件下载| 香蕉乱码成人久久天堂爱免费| 69堂精品视频| 成人深夜在线观看| 午夜精品国产更新| 国产婷婷一区二区| 91电影在线观看| 久久精品国产一区二区三 | 欧美日韩一区二区三区高清| 日本伊人精品一区二区三区观看方式| 精品播放一区二区| 色狠狠综合天天综合综合| 麻豆精品一区二区三区| 亚洲视频在线一区观看| 日韩精品一区二区三区老鸭窝| aa级大片欧美| 久久激情五月激情| 亚洲美女视频在线观看| 久久综合狠狠综合久久综合88| 91一区二区三区在线观看| 日韩1区2区3区| 中文字幕日本不卡| 精品少妇一区二区三区在线播放| 成人午夜激情在线| 热久久免费视频| 亚洲女性喷水在线观看一区| 精品国产一区久久| 欧日韩精品视频| 成人app网站| 韩国三级在线一区| 日本欧美一区二区| 一个色综合网站| 国产精品毛片a∨一区二区三区| 欧美电影影音先锋| 欧美在线啊v一区| 成人美女视频在线观看| 麻豆视频一区二区| 亚洲图片欧美色图| 伊人色综合久久天天| 国产欧美一区在线| 久久你懂得1024| 日韩视频免费观看高清在线视频| 在线亚洲一区二区| 91小视频在线| 成人美女视频在线观看| 国产成人av一区二区三区在线观看| 日韩福利视频网| 天堂成人国产精品一区| 亚洲在线观看免费| 亚洲国产精品欧美一二99| 亚洲曰韩产成在线| 一区二区三区中文免费| 成人欧美一区二区三区在线播放| 国产午夜精品在线观看| 久久人人爽爽爽人久久久| 欧美第一区第二区| 精品三级av在线| 欧美成人艳星乳罩| 久久综合九色综合欧美98 | 韩国三级在线一区| 国产一区视频在线看| 久久成人免费网| 六月丁香婷婷久久| 九九在线精品视频| 韩国视频一区二区| 东方欧美亚洲色图在线| 国产成人a级片| proumb性欧美在线观看| 色婷婷久久久亚洲一区二区三区| 色悠久久久久综合欧美99| 在线观看免费成人| 91精品国产欧美日韩| 日韩欧美成人一区| 欧美xxxxx裸体时装秀| 日韩女优制服丝袜电影| 国产亚洲欧洲一区高清在线观看| 中文字幕精品在线不卡| 亚洲欧美日韩系列| 午夜精品一区二区三区三上悠亚| 日精品一区二区三区| 理论电影国产精品| 成人高清伦理免费影院在线观看| 久久综合九色综合欧美就去吻| 久久久久亚洲综合| 国产精品国产a| 亚洲国产精品一区二区久久 | 精品少妇一区二区三区| 欧美国产乱子伦| 亚洲一二三区在线观看| 蜜桃av一区二区在线观看| 国产米奇在线777精品观看| 成人精品亚洲人成在线| 欧美日韩国产经典色站一区二区三区 | 丝袜美腿一区二区三区| 91福利社在线观看| 欧美久久久久久久久| 久久久久亚洲综合| 一区二区三区不卡在线观看| 青青草91视频| av在线播放成人| 538在线一区二区精品国产| 国产精品天美传媒沈樵| 亚洲成人免费在线观看| 成人国产在线观看| 日韩午夜激情av| 亚洲精品免费看| 另类成人小视频在线| 色天天综合久久久久综合片| 日韩欧美中文字幕公布| 亚洲欧美另类图片小说| 久久99久久99| 91久久久免费一区二区| 久久综合久久99| 亚洲成av人影院在线观看网| 成人午夜免费视频| 日韩午夜在线观看视频| 亚洲欧美日韩综合aⅴ视频| 国产一区二区三区蝌蚪| 欧美日韩一本到| 国产精品天美传媒沈樵| 黑人巨大精品欧美黑白配亚洲| 欧美在线视频日韩| 欧美国产精品一区二区三区| 蜜臀va亚洲va欧美va天堂| 在线免费亚洲电影| 亚洲欧洲在线观看av| 国产麻豆成人传媒免费观看| 在线成人免费观看| 亚洲一区二区在线视频| 91麻豆免费看片| 亚洲色图在线视频| 成人精品小蝌蚪| 国产婷婷色一区二区三区四区| 日本aⅴ精品一区二区三区| 欧美无砖砖区免费| 亚洲欧美中日韩| 成人一道本在线| 日本一区二区视频在线观看| 国产在线视频一区二区| 7777精品伊人久久久大香线蕉经典版下载| 《视频一区视频二区| 国产精品99精品久久免费| 日韩精品一区二区三区视频| 日韩电影在线观看一区| 欧美一区二区免费| 久久不见久久见免费视频1| 日韩一区二区中文字幕| 婷婷成人综合网| 欧美一区永久视频免费观看| 偷窥少妇高潮呻吟av久久免费 | 欧美日韩一级视频| 亚洲大片在线观看| 欧美日韩国产高清一区二区| 亚洲综合成人在线视频| 欧美日韩一级片在线观看| 午夜国产精品影院在线观看| 欧美精品一卡二卡| 另类成人小视频在线| 久久综合久久综合久久| 国产成人久久精品77777最新版本| 国产午夜亚洲精品羞羞网站| 99久久久免费精品国产一区二区| 亚洲精品成a人| 欧美美女激情18p| 久久成人18免费观看| 中文字幕不卡三区| 欧洲av一区二区嗯嗯嗯啊| 日韩国产欧美视频| 国产视频911| 91小视频在线观看| 免费成人结看片| 中文欧美字幕免费| 欧美在线播放高清精品| 久久99精品视频| 亚洲免费资源在线播放| 欧美美女直播网站| 国产成人av福利| 亚洲免费观看高清在线观看|