lpc1768的系統(tǒng)時(shí)鐘
#define XTAL_FREQ 12000000
#define VECT_TAB_OFFSET 0x0000
void SystemInit(void)
{
//PLL0時(shí)鐘配置
LPC_SC->SCS=0X00000020; /*使能外部主晶振,頻率范圍1-20M*/
if(LPC_SC->SCS&(1<<5)) /* 主時(shí)鐘被使能 */
{
while((LPC_SC->SCS&(1<<6))==0);/* 等待主晶振使能并穩(wěn)定 */
}
LPC_SC->CCLKCFG=0x00000003; /* 選擇PLL到CCLK的分頻 4 */
LPC_SC->PCLKSEL0=0x00000000; /*選擇外設(shè)時(shí)鐘從CCLK的分屏 均為0,均為4分頻率,后期可改 */
LPC_SC->PCLKSEL1=0x00000000;
LPC_SC->CLKSRCSEL=0x00000001; /* 選擇CCLK時(shí)鐘源 主震蕩器作為PLL0時(shí)鐘源 */
LPC_SC->PLL0CFG=0x00050063; /* 選擇PLL倍頻 N 6 M 100 pllout 400M */
LPC_SC->PLL0FEED=0xAA;
LPC_SC->PLL0FEED=0x55;
LPC_SC->PLL0CON=0x01; /* 使能PLL0 */
LPC_SC->PLL0FEED=0xAA;
LPC_SC->PLL0FEED=0x55;
while(!(LPC_SC->PLL0STAT&(1<<26)));/* 等待PLL0鎖定 */
LPC_SC->PLL0CON=0x03; /* 使能PLL0連接并使能 */
LPC_SC->PLL0FEED=0xAA;
LPC_SC->PLL0FEED=0x55;
while(!(LPC_SC->PLL0STAT&((1<<25)|(1<<24))));/* 等待連接并使能成功 */
//PLL1時(shí)鐘配置
LPC_SC->PLL1CFG=0x00000023; /*設(shè)置PLL1分頻 M 3 P 2 */
LPC_SC->PLL1FEED=0xAA;
LPC_SC->PLL1FEED=0x55;
LPC_SC->PLL1CON=0x01; /* PLL1 Enable */
LPC_SC->PLL1FEED=0xAA;
LPC_SC->PLL1FEED=0x55;
while(!(LPC_SC->PLL1STAT&(1<<10)));/* 等待PLL時(shí)鐘鎖定 */
LPC_SC->PLL1CON=0x03; /* 使能并連接 */
LPC_SC->PLL1FEED=0xAA;
LPC_SC->PLL1FEED=0x55;
while(!(LPC_SC->PLL1STAT&((1<<9)|(1<<8))));/* 等待連接并使能成功 */
LPC_SC->PCONP=0x00000008; /* 初始化僅僅打開UART0時(shí)鐘 */
LPC_SC->CLKOUTCFG=0x00000000; /* 不使用CLOCK輸出 */
LPC_SC->FLASHCFG=0x0000403A; //設(shè)置flash訪問時(shí)間
#if (__RAM_MODE__==1) //根據(jù)配置
SCB->VTOR=0x10000000|VECT_TAB_OFFSET;
#else
SCB->VTOR=0x00000000|VECT_TAB_OFFSET; //中斷向量表在flash區(qū)間,偏移為0
#endif
}