久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8752|回復: 0
打印 上一主題 下一主題
收起左側

LPC11C14時鐘分頻詳解與代碼分析

[復制鏈接]
跳轉到指定樓層
樓主
ID:71922 發表于 2015-1-10 20:23 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
參考資料 : 網絡文摘 -> ARM時鐘詳解-LPC11XX.s時鐘








void SystemInit (void)
{

  uint32_t i;

/* SYSMEMREMAP 系統存儲器重映射寄存器 */
#ifdef __DEBUG_RAM                // 如果是調試模式   
  // 用戶RAM模式,中斷向量被重新映射到靜態ROM
  LPC_SYSCON->SYSMEMREMAP = 0x1;                /* remap to internal RAM */
#else
  // 用戶Flash模式,中斷向量不會被映射,一直位于Flash   
  LPC_SYSCON->SYSMEMREMAP = 0x2;                /* remap to internal flash */
#endif

// 振蕩器未被旁路(讓它不起作用)bit0=0,外部晶振頻率為1~20Mhz范圍bit1=0
  LPC_SYSCON->SYSOSCCTRL = 0x00;                

  /* main system OSC run is cleared, bit 5 in PDRUNCFG register */
  LPC_SYSCON->PDRUNCFG &= ~(0x1<<5);         // 系統振蕩器上電 寫0上電 寫1掉電 默認掉電
  /* Wait 200us for OSC to be stablized, no status
  indication, dummy wait. */
  for ( i = 0; i < 0x100; i++ );                 // 等待振蕩器穩定

  Main_PLL_Setup();                                           // 倍頻PLL鎖相環,設置主時鐘

  /* System clock to the IOCON needs to be enabled or
  most of the I/O related peripherals won't work. */
  LPC_SYSCON->SYSAHBCLKCTRL |= (1<<16);                 // 使能IO 配置塊時鐘
  return;
}


void Main_PLL_Setup ( void ) 主要做三件事:

    1、設置PLL的時鐘來源為12MHz晶振,再倍頻PLL為48Mhz

    2、設置主時鐘頻率為倍頻后的頻率 即48Mhz

    3、設置AHB時鐘預分頻值


void Main_PLL_Setup ( void )
{

// uint32_t regVal;
  /* 先倍頻PLL,再讓主時鐘選擇倍頻后的PLL 頻率 */
  ClockSource = OSC_CLK;       
  // 系統PLL時鐘來源:IRC振蕩器bit:00、系統振蕩器(晶振)bit:01、看門口振蕩器 bit:10                                                  
  LPC_SYSCON->SYSPLLCLKSEL = MAIN_CLKSRCSEL_Val;    /* Select system OSC PLL時鐘源選擇系統振蕩器 即外部12M晶振*/
  LPC_SYSCON->SYSPLLCLKUEN = 0x01;                  /* Update clock source 更新PLL選擇時鐘源 */
  LPC_SYSCON->SYSPLLCLKUEN = 0x00;                  /* toggle Update register once 先寫0再寫1 達到更新時鐘源的目的*/
  LPC_SYSCON->SYSPLLCLKUEN = 0x01;                                          
  while ( !(LPC_SYSCON->SYSPLLCLKUEN & 0x01) );     /* Wait until updated 等待時鐘源更新完畢后向下執*/

// regVal = LPC_SYSCON->SYSPLLCTRL;
// regVal &= ~0x1FF;                                 // 清空0 - 8 位
// LPC_SYSCON->SYSPLLCTRL = (regVal | (MAIN_PLL_P_Val<<5) | MAIN_PLL_M_Val); // P=0 M=3

  /* 計算公式
        模式 1(普通模式)
        在這種模式下使能后置分頻器,占空比時鐘為 50%,頻率關系如下:
        Fclkout=M×Fclkin=(FCCO)/(2×P)  ---> 輸出頻率 = M * 輸入頻率 = (156Mhz~320Mhz)/ (2*P)
        (1)
        為了選擇合適的 M 和 P 值,推薦如下步驟:
        第 1 步:指定輸入時鐘頻率 Fclkin;
        第 2 步:計算 M 值以獲得所需的輸出頻率 Fclkout,M=Fclkout/Fclkin;
        第 3 步:找出一個值使得 FCCO=2×P×Fclkout;
        第 4 步:檢查所有的頻率和分頻器值是否符合表 3.5 的限定。
        */

  // LPC1114允許最大工作頻率為50Mhz 50/12 = 4.1666 所以M值只能為4才不會超過50Mhz => 12*4 =48Mhz
  // FCCO的頻率范圍 156Mhz~320Mhz         320/2/48 = 3 P值沒有3 所有P值只能為 2 =>  48*2*2 = 192Mhz
  LPC_SYSCON->SYSPLLCTRL = 0x23; //設置倍頻 為48Mhz

  /* Enable main system PLL, main system PLL bit 7 in PDRUNCFG. */
  LPC_SYSCON->PDRUNCFG &= ~(0x1<<7);                                  // PLL 上電        寫0上電 寫1掉電 默認掉電
  while ( !(LPC_SYSCON->SYSPLLSTAT & 0x01) );                                /* Wait until it's locked 等待PLL鎖定成功*/

  // 主時鐘頻率可以選擇四種 IRC振蕩器00、PLL倍頻前01、看門狗振蕩器10、PLL倍頻后11
  LPC_SYSCON->MAINCLKSEL = 0x03;                                /* Select PLL clock output 主時鐘源選擇PLL倍頻后的時鐘*/
  LPC_SYSCON->MAINCLKUEN = 0x01;                        /* Update MCLK clock source 更新主時鐘源*/
  LPC_SYSCON->MAINCLKUEN = 0x00;                        /* Toggle update register once 先寫0 再寫1 達到更新時鐘源的目的*/
  LPC_SYSCON->MAINCLKUEN = 0x01;
  while ( !(LPC_SYSCON->MAINCLKUEN & 0x01) );        /* Wait until updated 等待主時鐘鎖定成功后向下執行*/

  // AHB時鐘分頻值為1 即主時鐘除以1 相當于沒有分頻率 ,給GPIO、內核、存儲器、APB提供時鐘頻率
  LPC_SYSCON->SYSAHBCLKDIV = SYS_AHB_DIV_Val;        /* SYS AHB clock, typical is 1 or 2 or 4 */

  SystemFrequency = ClockSource * (MAIN_PLL_M_Val+1);  // (12000000UL) * (3 + 1)
  SystemAHBFrequency = (uint32_t)(SystemFrequency/SYS_AHB_DIV_Val);         // 保存該值,以備用 SYS_AHB_DIV_Val = 1   
  return;
}

公式:





                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产午夜精品视频 | 国外激情av | 综合久久av | 亚洲成人一区二区在线 | 久久国产成人午夜av影院武则天 | 97精品超碰一区二区三区 | 国产97色| 色综合久久伊人 | 一区二区高清 | 九九久久精品 | 久久久久久国产精品 | 中文字幕综合 | 国产精品久久久久久久久免费樱桃 | 福利视频网站 | 一级黄色片免费 | 一区二区三区视频在线观看 | 国产精品亚洲综合 | 久久精品一区 | 风间由美一区二区三区在线观看 | 欧美在线视频观看 | av毛片在线播放 | 成人福利片| 亚洲精品欧美 | 中文字幕韩在线第一页 | av中文字幕在线 | 久久婷婷国产 | 久久专区 | 亚洲第1页 | 精品九九九 | 欧美h版| 精品视频在线观看 | 欧美群妇大交群中文字幕 | 午夜av在线 | 日日躁狠狠躁aaaaxxxx | 嫩草最新网址 | 毛片com | 国产精品成人一区二区三区 | 国产精品国产三级国产aⅴ浪潮 | 美日韩精品 | 亚洲国产欧美日韩 | 中文字幕成人av |