PAGE1
PAGE1
LPC1768时钟和复位控制
时钟和复位控制是嵌入式系统设计中的关键部分,尤其是在使用LPC1768微控制器时。LPC1768具有复杂的时钟系统和多种复位源,这些功能确保了系统的稳定性和高效性。本节将详细介绍LPC1768的时钟和复位控制机制,包括时钟源、时钟树、时钟配置以及复位源和复位控制。
时钟源
LPC1768支持多种时钟源,主要包括外部晶振、内部RC振荡器、PLL(锁相环)和系统时钟。每种时钟源都有其特定的应用场景和配置方法。
外部晶振
外部晶振是LPC1768最常用的时钟源之一。它通常连接到微控制器的X1和X2引脚,提供一个精确的时钟信号。外部晶振的频率范围通常在1MHz到25MHz之间。
配置外部晶振
硬件连接:将外部晶振连接到X1和X2引脚。
软件配置:通过修改寄存器来启用外部晶振。
//启用外部晶振
voidenable_external_oscillator(void){
//设置系统控制寄存器SCS中的XOEN位
LPC_SC-SCS|=(15);//使能外部晶振
//等待外部晶振稳定
while(!(LPC_SC-SCS(16)));//检查XOSCF位,确认外部晶振已稳定
}
内部RC振荡器
内部RC振荡器是一种低精度但高可靠性的时钟源,用于系统启动时的初始时钟。LPC1768内部RC振荡器的频率为12MHz。
配置内部RC振荡器
软件配置:通过修改寄存器来启用内部RC振荡器。
//启用内部RC振荡器
voidenable_internal_oscillator(void){
//设置系统控制寄存器SCS中的IRCEN位
LPC_SC-SCS|=(14);//使能内部RC振荡器
//等待内部RC振荡器稳定
while(!(LPC_SC-SCS(17)));//检查IRCOSCF位,确认内部RC振荡器已稳定
}
PLL(锁相环)
PLL用于将低频时钟源转换为高频时钟源,以提高系统的性能。LPC1768支持两个PLL,分别称为PLL0和PLL1。PLL0通常用于主系统时钟,而PLL1用于USB时钟。
配置PLL0
选择输入时钟源:可以是内部RC振荡器或外部晶振。
设置PLL0的乘法和除法因子。
启用PLL0并等待其稳定。
//配置PLL0
voidconfigure_pll0(intmul_factor,intdiv_factor){
//选择输入时钟源为外部晶振
LPC_SC-PLL0CON=0x01;//PLL0配置为旁路模式
LPC_SC-PLL0CFG=(mul_factor16)|(div_factor0xFF);//设置乘法和除法因子
LPC_SC-PLL0FEED=0xAA;//写入PLL0FEED寄存器
LPC_SC-PLL0FEED=0x55;//写入PLL0FEED寄存器
//启用PLL0
LPC_SC-PLL0CON=0x03;//PLL0配置为锁定模式
LPC_SC-PLL0FEED=0xAA;//写入PLL0FEED寄存器
LPC_SC-PLL0FEED=0x55;//写入PLL0FEED寄存器
//等待PLL0稳定
while(!(LPC_SC-PLL0STAT(126)));//检查PLL0锁定状态
}
系统时钟
系统时钟是指LPC1768内部用于系统运行的时钟。它可以来自内部RC振荡器、外部晶振或PLL。
配置系统时钟
选择系统时钟源。
设置系统时钟分频器。
//配置系统时钟
voidconfigure_system_clock(intclock_source,intdivisor){
//选择系统时钟源
LPC_SC-CCLKSEL=clock_source;//0:IRC,1:ext.osc.,2:PLL0
//设置系统时钟分频器
LPC_SC-CCLKCFG=divisor-1;//分频因子,实际值为divisor
//等待系统时钟稳定
while(!(LPC_SC-SYSSTAT(116)));//检查系统时钟稳定状态
}
时钟树
LPC1768的时钟树是一个复杂的时钟分配网络,它确保了各个模块的时钟需求