PAGE1
PAGE1
LPC1768系列时钟管理
时钟源
LPC1768系列微控制器提供了多种时钟源,这些时钟源可以用于系统时钟、外设时钟以及各种定时器。理解这些时钟源的工作原理和配置方法是进行高效系统设计的基础。
1.内部RC振荡器(IRC)
内部RC振荡器是一个内置的低精度振荡器,通常用于系统启动时的时钟源。IRC振荡器的频率为12MHz,可以通过软件配置启用或禁用。
启用IRC振荡器
//启用内部RC振荡器
voidenableIRC(void){
//设置CLKSRCSEL寄存器选择IRC作为系统时钟源
LPC_SC-CLKSRCSEL=0x00;//0x00表示选择IRC
//设置系统时钟控制寄存器(SYSAHBCLKDIV)为1,即不进行分频
LPC_SC-SYSAHBCLKDIV=0x01;
//设置系统时钟选择寄存器(SYSPLLCLKSEL)选择IRC作为PLL输入时钟源
LPC_SC-SYSPLLCLKSEL=0x00;
//使能PLL
LPC_SC-PLOCK=0x01;//设置PLL使能位
//等待PLL锁定
while(!(LPC_SC-PLOCK0x01)){
//等待PLL锁定
}
//设置系统时钟选择寄存器(SYSPLLCLKSEL)选择PLL输出作为系统时钟源
LPC_SC-SYSPLLCLKSEL=0x01;
//设置系统时钟控制寄存器(SYSAHBCLKDIV)为1,即不进行分频
LPC_SC-SYSAHBCLKDIV=0x01;
}
//示例:启用IRC振荡器并配置系统时钟
intmain(void){
enableIRC();
//其他初始化代码
}
2.外部晶振(XTAL)
外部晶振是一个高精度振荡器,通常用于需要高精度时钟的应用。LPC1768支持4~25MHz的外部晶振频率。外部晶振可以通过软件配置启用或禁用,并且可以作为PLL的输入时钟源。
启用外部晶振
//启用外部晶振
voidenableXTAL(void){
//设置CLKSRCSEL寄存器选择外部晶振作为系统时钟源
LPC_SC-CLKSRCSEL=0x01;//0x01表示选择外部晶振
//使能外部晶振
LPC_SC-PCLKSEL0=(LPC_SC-PCLKSEL0~(0x036))|(0x026);//使能外部晶振
//等待外部晶振稳定
while(!(LPC_SC-PLLSTAT0x01)){
//等待外部晶振稳定
}
//设置系统时钟选择寄存器(SYSPLLCLKSEL)选择外部晶振作为PLL输入时钟源
LPC_SC-SYSPLLCLKSEL=0x01;
//使能PLL
LPC_SC-PLOCK=0x01;//设置PLL使能位
//等待PLL锁定
while(!(LPC_SC-PLOCK0x01)){
//等待PLL锁定
}
//设置系统时钟选择寄存器(SYSPLLCLKSEL)选择PLL输出作为系统时钟源
LPC_SC-SYSPLLCLKSEL=0x01;
//设置系统时钟控制寄存器(SYSAHBCLKDIV)为1,即不进行分频
LPC_SC-SYSAHBCLKDIV=0x01;
}
//示例:启用外部晶振并配置系统时钟
intmain(void){
enableXTAL();
//其他初始化代码
}
时钟分频
时钟分频是通过系统时钟控制寄存器(SYSAHBCLKDIV)和外围时钟控制寄存器(PCLKSEL0、PCLKSEL1)来实现的。通过分频,可以调整系统时钟和外设时钟的频率,以满足不同应用的需求。
1.系统时钟分频
系统时钟分频通过SYSAHBCLKDIV寄存器来实现。该寄存器的值决定了系统时钟的分频倍数。
配置系统时钟分频
//配置系统时钟分频
voidconfigureSystemClockDiv(intdiv){
//设置系统时钟控制寄存器(SYSAHBCLKDIV)