LPC1114_时钟系统解析

发布者:黑白之间最新更新时间:2015-07-10 来源: 51hei关键字:LPC1114  时钟系统 手机看文章 扫描二维码
随时随地手机看文章
一般我们在main()的开始部分都需要进行时钟的初始化,根据需要可以选择时钟源、是否开启PLL倍频、以及PLL配置达到所需要的输出时钟,然后再选择倍频后的时钟作为主时钟源。

如下图:需要注意几个时钟的概念,



 

#define CLOCK_SETUP           1
#define MAIN_PLL_SETUP        1
#define MAIN_CLKSRCSEL_Val    0x00000001
#define MAIN_PLL_M_Val        0x00000003
#define MAIN_PLL_P_Val        0x00000001
#define SYS_AHB_DIV_Val       1   /* 1 through 255, typical is 1 or 2 or 4 */

#define XTAL        (12000000UL)        /* Oscillator frequency               */
#define OSC_CLK     (      XTAL)        /* Main oscillator frequency          */
#define IRC_OSC     (12000000UL)        /* Internal RC oscillator frequency   */
#define WDT_OSC     (  250000UL)        /* WDT oscillator frequency           */

uint32_t ClockSource = IRC_OSC;
uint32_t SystemFrequency = IRC_OSC; /*!< System Clock Frequency (Core Clock)  */
uint32_t SystemAHBFrequency = IRC_OSC;

void Main_PLL_Setup ( void )
{
  uint32_t regVal;
  ClockSource = OSC_CLK;
  LPC_SYSCON->SYSPLLCLKSEL = MAIN_CLKSRCSEL_Val;   /* Select system OSC--系统振荡器 */
  LPC_SYSCON->SYSPLLCLKUEN = 0x01;                 /* Update clock source */
  LPC_SYSCON->SYSPLLCLKUEN = 0x00;                 /* toggle Update register once */
  LPC_SYSCON->SYSPLLCLKUEN = 0x01;
  while ( !(LPC_SYSCON->SYSPLLCLKUEN & 0x01) );    /* Wait until updated */
  regVal = LPC_SYSCON->SYSPLLCTRL;
  regVal &= ~0x1FF;
  LPC_SYSCON->SYSPLLCTRL = (regVal | (MAIN_PLL_P_Val<<5) | MAIN_PLL_M_Val);/* P=1, M=4 FCLKOUT=12*4=48Mhz */
 
  /* Enable main system PLL, main system PLL bit 7 in PDRUNCFG. */
  LPC_SYSCON->PDRUNCFG &= ~(0x1<<7);              /* PDRUNCFG第七位写0,即系统PLL上电 */
  while ( !(LPC_SYSCON->SYSPLLSTAT & 0x01) );     /* Wait until it's locked 确定PLL锁定以后向下执行 */
  LPC_SYSCON->MAINCLKSEL = 0x03;                /* Select PLL clock output--选择PLL输出作为主时钟 */
  LPC_SYSCON->MAINCLKUEN = 0x01;                /* Update MCLK clock source --允许更新主时钟*/
  LPC_SYSCON->MAINCLKUEN = 0x00;                /* Toggle update register once */
  LPC_SYSCON->MAINCLKUEN = 0x01;
  while ( !(LPC_SYSCON->MAINCLKUEN & 0x01) );     /* Wait until updated 确定主时钟锁定以后向下执行 */
  LPC_SYSCON->SYSAHBCLKDIV = SYS_AHB_DIV_Val;     /* SYS AHB clock, typical is 1 or 2 or 4 --SYSAHBCLKDIV的值为1,即不分频 使AHB时钟设置为48Mhz */
#if MAIN_PLL_SETUP
  SystemFrequency = ClockSource * (MAIN_PLL_M_Val+1);
#else
  SystemFrequency = ClockSource;
#endif
  SystemAHBFrequency = (uint32_t)(SystemFrequency/SYS_AHB_DIV_Val);
  return;
}
/**
 * Initialize the system
 *
 * @param  none
 * @return none
 *
 * @brief  Setup the microcontroller system.
 *         Initialize the System and update the SystemFrequency variable.
 */
void SystemInit (void)
{
  uint32_t i;
#ifdef __DEBUG_RAM   
  LPC_SYSCON->SYSMEMREMAP = 0x1;  /* remap to internal RAM */
#else
#ifdef __DEBUG_FLASH   
  LPC_SYSCON->SYSMEMREMAP = 0x2;  /* remap to internal flash */
#endif
#endif
#if (CLOCK_SETUP)                       /* Clock Setup */
  /* bit 0 default is crystal bypass,
  bit1 0=0~20Mhz crystal input, 1=15~50Mhz crystal input. */
  LPC_SYSCON->SYSOSCCTRL = 0x00;
  /* main system OSC run is cleared, bit 5 in PDRUNCFG register */
  LPC_SYSCON->PDRUNCFG &= ~(0x1<<5);    /* PDRUNCFG的第五位写0,即系统系统振荡器上电 */
  /* Wait 200us for OSC to be stablized, no status
  indication, dummy wait. */
  for ( i = 0; i < 0x100; i++ );
#if (MAIN_PLL_SETUP)
  Main_PLL_Setup(); 
#endif
#endif /* endif CLOCK_SETUP */
  /* System clock to the IOCON needs to be enabled or
  most of the I/O related peripherals won't work. */
  LPC_SYSCON->SYSAHBCLKCTRL |= (1<<16);                  //使能IO模块的时钟
  return;
}
关键字:LPC1114  时钟系统 引用地址:LPC1114_时钟系统解析

上一篇:NXP_LPC1114延时函数集合
下一篇:Tiny6410开发小小总结下

推荐阅读最新更新时间:2024-03-16 14:24

基于DS12C887的日历时钟显示系统设计
在银行或者其他的公共场合中,经常会看到显示实时信息的显示屏,其中包括年、月、日、星期、时间等,本例子的功能是在51单片机系统中设置、获取、记录实时的日历时钟信息并通过数码管显示,选用日历时钟芯片DS12C887作为实时时钟芯片,为系统提供详细的时间信息,次款芯片内部有锂电池,可以带掉电的情况下保存10年以上。 主要器件: 1、 AT89C52单片机芯片,用于对时钟芯片的控制和初始化,并控制数码管显示。 2、 日历时钟芯片DS12C887。 试验流程图; 试验电路图: 试验程序代码: //CalendarClk.h程序 #ifndef _CALENDARCLK_H // 防止Ca
[单片机]
基于DS12C887的日历<font color='red'>时钟</font>显示<font color='red'>系统</font>设计
STM32F4系统时钟设置之二
STM32F407系统时钟配置 时钟树 方法一,采用官方库提供的配置(这里外部晶振25MHz,系统配置为168MHz) STM32F4启动与STM32F10X不同,时钟已经默认配置好 启动代码,文件:startup_stm32f4xx.s Reset handler Reset_Handler PROC EXPORT Reset_Handler IMPORT SystemInit IMPORT __main LDR R0, =SystemInit BLX R0 LDR R0, =__main
[单片机]
STM32F4<font color='red'>系统</font><font color='red'>时钟</font>设置之二
STM32学习笔记(一)----系统时钟
STM32的系统时钟来源可分为三个:HSI(高速内部时钟)、HSE(高速外部时钟)、PLL (经PLL倍频后的时钟信号)。 在设置系统时钟时,要先重置下RCC- CR 及 RCC- CFGR 寄存器,具体可参照STM32 的官方库,里面每个步骤都有详细说明的。下面大概地说一下关于系统时钟选择的设置: 1)以HSI作为系统时钟来源: RCC- CFGR SW=00 -----------------------------------------------------------------------------------------------
[单片机]
基于单片机C8051F021和时钟芯片实现定时采集存储系统的设计
随着科技的高速发展,现代工业测控领域的很多应用中都需要实现大量数据的定时采集存储。以为海流计设计的海流数据采集存储接口电路为例,介绍一种定时采集存储系统的工作原理及其实现方法。 1 总体结构 在很多情况下,尤其是恶劣的工作环境下,高性能的单片机和大容量的Flash存储器是数据采集存储系统的最佳选择,本文介绍的系统也是基于这样的考虑。系统硬件结构并不复杂,包括高性能单片机C8051F021、实时时钟芯片SD2300、大容量Flash存储器K9G8G08及其外围电路,如图1所示。工作原理也较为简单,通过串口将单片机C8051F021与海流计相连,通过对单片机的编程实现对海流计的控制和使用。同时,为了实现定时采集和数据存储的功能,还
[单片机]
基于单片机C8051F021和<font color='red'>时钟</font>芯片实现定时采集存储<font color='red'>系统</font>的设计
DVD系统时钟发生器
PLL1700是一款价廉、多时钟产生器锁相环(PLL)。它可从27MHz基准输入频率产生4个系统时钟。它通过不用外部元件使用户既能降低成本又节省空间,并可实现高性能无线电数/模变换器和模/数变换器所需的特低抖动性能。PLL 1700对于MPEG-2应用来讲是理想的器件。MPEG-2(Moving Pictures Experts Group)系统需要几个时钟来控制环绕声AC-3译码器、数字信号处理器和数/模变换器。它接受27MHz MPEG-2视频时钟来实现音频/视频同步器并且为系统的其余部分提供所有的音频时钟。它所你生的4个音频系统时钟是:SCK01为33.8688MHz(固定),
[半导体设计/制造]
STM32学习笔记之基础介绍(一)(时钟源,系统时钟
这是我第一次在CSDN上写博客,准备把自己学习STM32的内容记录下来。 因为最近在复习,所以就当作是巩固学习吧。 首先我用的具体型号是STM32F407ZGT6,属于M4系列的,使用Keil平台开发,ST-LINK下载。 第一篇的话,就先简单介绍一下开发环境,以及一些相应的问题。 1、我学习的是寄存器版本,相对于库函数版本来说,学习起来比较困难;不过学习寄存器版本优点是能更深入的了解单片机的运行原理,而且寄存器版本学会了,库函数也就能会了。 STM32 有两种操作方式: 方式1:库函数操作 ----ST为了用户编写方便,把MCU中的外设功能全部封装成
[单片机]
STM32的时钟系统RCC详细整理
一、综述: 1、时钟源 在 STM32 中,一共有 5 个时钟源,分别是 HSI 、 HSE 、 LSI 、 LSE 、 PLL 。 ①HSI 是高速内部时钟, RC 振荡器,频率为 8MHz ; ②HSE 是高速外部时钟,可接石英 / 陶瓷谐振器,或者接外部时钟源,频率范围是 4MHz – 16MHz ; ③LSI 是低速内部时钟, RC 振荡器,频率为 40KHz ; ④LSE 是低速外部时钟,接频率为 32.768KHz 的石英晶体; ⑤PLL 为锁相环倍频输出,严格的来说并不算一个独立的时钟源, PLL 的输入可以接 HSI/2 、 HSE 或者 HSE/2 。PLL倍频可选择为 2 – 16 倍,
[单片机]
STM32的<font color='red'>时钟</font><font color='red'>系统</font>RCC详细整理
专利解密:国微思尔芯时钟对齐系统
国微思尔芯的时钟对齐系统专利,通过实现多片FPGA派生时钟的相位对齐,进而给用户提供更灵活的时钟方案,减少用户处理时钟树的负担。 近日,埃瓦科技成功发布了新一代3D视觉AI芯片,而正是国微思尔芯的原型验证工具助力了该芯片的量产。该原型验证解决方案非常适用于对嵌入式软件内容有高要求的项目,迭代速度快,可以满足对时间敏感的项目,同时也符合客户对高性能的需求。 集成电路在验证阶段一般会选择在FPGA上做原型验证,用户设计会被切割成多个部分放在多颗FPGA上,为了保证切割后的设计能够正常运行,需要使多个FPGA的时钟相位一致,一般的做法是在硬件上保证时钟缓冲到各个FPGA走等长的路径,物理上保证相位的等长。但是,一般用户还使用该时
[嵌入式]
专利解密:国微思尔芯<font color='red'>时钟</font>对齐<font color='red'>系统</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved