PAGE1
PAGE1
18.LPC1700系列时钟管理
18.1时钟源概述
LPC1700系列微控制器提供了多种时钟源,这些时钟源可以用于系统时钟、外设时钟以及其他各种时钟需求。时钟源的选择和配置对于系统的性能和功耗管理至关重要。LPC1700系列的主要时钟源包括:
内部RC振荡器(IRC):提供一个固定频率的时钟源,通常为12MHz。IRC振荡器不需要外部元件,适用于快速启动和低功耗应用。
外部晶振(CrystalOscillator):通过外部晶振提供的时钟源,频率范围通常在1MHz到25MHz之间。外部晶振可以提供更精确的时钟频率,适用于需要高精度的应用。
外部时钟输入(ExternalClockInput):可以从外部输入一个时钟信号,频率范围同样在1MHz到25MHz之间。外部时钟输入适用于需要外部同步的系统。
PLL(Phase-LockedLoop):通过锁相环可以将低频时钟源倍频到更高的频率,适用于需要高速处理的应用。
18.1.1内部RC振荡器(IRC)
内部RC振荡器(IRC)是一个固定的12MHz时钟源,不需要外部元件。IRC振荡器可以快速启动,适用于低功耗和快速启动的应用。IRC振荡器的频率可以通过软件进行校准,以提高其精度。
启用IRC振荡器
启用IRC振荡器的步骤如下:
设置CLKSRCSEL寄存器选择IRC作为系统时钟源。
通过CLKOUTU寄存器选择IRC作为CLKOUT输出时钟源。
通过SYSAHBCLKDIV寄存器设置系统时钟分频。
#includeLPC17xx.h
//启用IRC振荡器
voidenable_irc_oscillator(void){
//选择IRC作为系统时钟源
LPC_SC-CLKSRCSEL=0x00;//0x00表示选择IRC
//选择IRC作为CLKOUT输出时钟源
LPC_SC-CLKOUTSEL=0x00;//0x00表示选择IRC
//设置系统时钟分频
LPC_SC-SYSAHBCLKDIV=0x01;//0x01表示不分频
}
intmain(void){
enable_irc_oscillator();
//主程序
while(1){
//系统运行
}
}
18.1.2外部晶振(CrystalOscillator)
外部晶振可以通过外部晶振电路提供一个精确的时钟源。LPC1700系列支持1MHz到25MHz的外部晶振频率。外部晶振的配置包括选择晶振作为时钟源、配置晶振的启动时间和频率等。
启用外部晶振
启用外部晶振的步骤如下:
设置CLKSRCSEL寄存器选择外部晶振作为系统时钟源。
配置晶振的启动时间和频率。
通过CLKOUTSEL寄存器选择外部晶振作为CLKOUT输出时钟源。
通过SYSAHBCLKDIV寄存器设置系统时钟分频。
#includeLPC17xx.h
//启用外部晶振
voidenable_external_oscillator(void){
//选择外部晶振作为系统时钟源
LPC_SC-CLKSRCSEL=0x01;//0x01表示选择外部晶振
//配置晶振的启动时间和频率
LPC_SC-CCLKCFG=0x01;//选择晶振频率为12MHz
LPC_SC-OSCCTRL=0x000F0000;//设置晶振启动时间为1024cycles
//选择外部晶振作为CLKOUT输出时钟源
LPC_SC-CLKOUTSEL=0x01;//0x01表示选择外部晶振
//设置系统时钟分频
LPC_SC-SYSAHBCLKDIV=0x01;//0x01表示不分频
}
intmain(void){
enable_external_oscillator();
//主程序
while(1){
//系统运行
}
}
18.1.3外部时钟输入(ExternalClockInput)
外部时钟输入可以从外部提供一个时钟信号,频率范围同样在1MHz到25MHz之间。外部时钟输入适用于需要外部同步的系统。配置外部时钟输入包括选择外部时钟作为时钟源、配置输入时钟的频率等。
启用外部时钟输入
启用外部时钟输入的步骤如下:
设置CLKSRCSEL寄存