PAGE1
PAGE1
系统时钟与复位管理
在嵌入式系统设计中,系统时钟和复位管理是至关重要的部分。它们直接影响系统的性能、功耗和可靠性。本节将详细介绍NXPLPC1100系列单片机的系统时钟和复位管理机制,包括时钟源的选择、时钟树的配置、复位源的识别和复位过程的管理。
1.系统时钟源
LPC1100系列单片机提供了多种时钟源,包括外部晶振、内部RC振荡器和外部时钟输入。这些时钟源可以通过软件配置来选择和配置,以满足不同的应用需求。
1.1外部晶振
外部晶振是一种高精度的时钟源,通常用于需要精确时钟的应用。LPC1100系列支持12MHz的外部晶振。外部晶振通过连接到单片机的XIN和XOUT引脚来提供时钟信号。
配置外部晶振:
//配置外部晶振
voidconfigure_external_oscillator(void){
//使能外部晶振
LPC_SYSCON-SYSOSCCTRL|=(10);//SYSOSCCTRL[0]=1,enableexternaloscillator
LPC_SYSCON-SYSPLLCTRL|=(10);//SYSPLLCTRL[0]=1,enablesystemPLL
//配置时钟源为外部晶振
LPC_SYSCON-SYSAHBCLKCTRL|=(10);//使能系统时钟
LPC_SYSCON-MAINCLKSEL=0x01;//选择外部晶振作为主时钟源
LPC_SYSCON-MAINCLKUEN=0x01;//更新主时钟源
//等待时钟稳定
while(!(LPC_SYSCON-SYSOSCSTAT(10)));//等待外部晶振稳定
while(!(LPC_SYSCON-SYSPLLSTAT(10)));//等待PLL稳定
}
代码说明:
LPC_SYSCON-SYSOSCCTRL|=(10);:使能外部晶振。
LPC_SYSCON-SYSPLLCTRL|=(10);:使能系统PLL。
LPC_SYSCON-SYSAHBCLKCTRL|=(10);:使能系统时钟。
LPC_SYSCON-MAINCLKSEL=0x01;:选择外部晶振作为主时钟源。
LPC_SYSCON-MAINCLKUEN=0x01;:更新主时钟源。
while(!(LPC_SYSCON-SYSOSCSTAT(10)));:等待外部晶振稳定。
while(!(LPC_SYSCON-SYSPLLSTAT(10)));:等待PLL稳定。
1.2内部RC振荡器
内部RC振荡器是一种低精度的时钟源,通常用于需要快速启动的应用。LPC1100系列支持12MHz的内部RC振荡器。
配置内部RC振荡器:
//配置内部RC振荡器
voidconfigure_internal_oscillator(void){
//使能内部RC振荡器
LPC_SYSCON-SYSRCSRC=0x00;//选择内部RC振荡器作为系统时钟源
LPC_SYSCON-SYSRCSRCUEN=0x01;//更新系统时钟源
//配置主时钟源为内部RC振荡器
LPC_SYSCON-MAINCLKSEL=0x00;//选择内部RC振荡器作为主时钟源
LPC_SYSCON-MAINCLKUEN=0x01;//更新主时钟源
}
代码说明:
LPC_SYSCON-SYSRCSRC=0x00;:选择内部RC振荡器作为系统时钟源。
LPC_SYSCON-SYSRCSRCUEN=0x01;:更新系统时钟源。
LPC_SYSCON-MAINCLKSEL=0x00;:选择内部RC振荡器作为主时钟源。
LPC_SYSCON-MAINCLKUEN=0x01;:更新主时钟源。
1.3外部时钟输入
外部时钟输入是一种灵活性高的时钟源,可以通过外部信号源提供时钟信号。LPC1100系列支持外部时钟输入,通常用于需要外部同步的应用。
配置外部时钟输入:
//配置外部时钟输入
voidconfigure_external_clock(void){
//使能外部时钟输入
LPC_SYSCON-EXTCLKSEL=0x01;//选择外部时钟输入作为系统时钟源
LPC_SYSCON-EXTCLKUEN=0x01;//更新系统时