#ifndef __SYS_H_

#define __SYS_H_

#include "common.h"

#define SystemCoreClock  120000000  //cpu时钟频率,计算时有用

#define ApbClock        120000000   //120M

#define EmcClock        60000000    //60M

#define UsbClock        48000000    //48M

void SystemInit(void);//系统时钟初始化,启动代码调用

#endif

#include "sys.h"

#define XTAL_FREQ   12000000

#define LPC_PBOOST  *((volatile unsigned long  *)(0X400FC1B0))

void SystemInit(void)

{

LPC_SC->SCS       = 0x00000021;//osc晶振使能,地址线不移位模式

while ((LPC_SC->SCS & (1<<6)) == 0);/* 等待osc晶振准备好    */

LPC_SC->CLKSRCSEL = 0x00000001;    /*选择osc为系统输入时钟*/

LPC_PBOOST |= (3<<0);   //打开功耗提升,可以提升到120MHZ

//    PLL0 Configuration (Main PLL)

//      PLL0 Configuration Register (PLL0CFG)

//         PLL out clock = (F_cco / (2 * P))

//         F_cco = (F_in * M * 2 * P)

//         F_in  must be in the range of 1 MHz to 25 MHz

//         PLL out clock must be in the range of 9.75 MHz to 160 MHz

//         F_cco   156-320M

//      MSEL: PLL Multiplier Selection 0-4bit m

//         M Value

//       PSEL: PLL Divider Selection 5-6bit p

//         P Value

//         1

//         2

//         4

//         8

LPC_SC->PLL0CFG   = 0x00000009;//选择倍频系数 P = 1 M = 10 FCCO = FIN*P*M*2=240M PLL_OUT = FCCO/(2*P)=120M

LPC_SC->PLL0CON   = 0x01;             /* PLL0 使能 */

LPC_SC->PLL0FEED  = 0xAA;

LPC_SC->PLL0FEED  = 0x55;

while (!(LPC_SC->PLL0STAT & (1<<10)));/* 等待PLL锁定 */

LPC_SC->PLL1CFG   = 0x00000023; //选择倍频系数 m = 4 p = 2 fcco = fin*2*p*m = 192m pllout = 192/2*p = 48M

LPC_SC->PLL1CON   = 0x01;             /* PLL1 使能    */

LPC_SC->PLL1FEED  = 0xAA;

LPC_SC->PLL1FEED  = 0x55;

while (!(LPC_SC->PLL1STAT & (1<<10)));  /* 等待PLL1 锁定 */

LPC_SC->CCLKSEL   = (1<<0)|(1<<8);      /* pll0为主时钟,分频数为1 */

LPC_SC->USBCLKSEL = (1<<0)|(2<<8);      /* pll1为cpu主时钟 */

LPC_SC->EMCCLKSEL = (1<<0);             /* EMC 为系统是时钟的一半  */

LPC_SC->PCLKSEL   = (1<<0);             /* 外设时钟分频数为1,120M */

LPC_SC->PCONP     = 0x00;               /* 可以关闭的外设全部被关闭 */

LPC_SC->CLKOUTCFG &= ~(1<<8);           /* 停止时钟输出    */

LPC_SC->FLASHCFG  = (5<<12)|0x03A;//6个cpu flash访问时钟,最安全的设置,120M时候可用

#ifdef  __RAM_MODE__//设置中断向量表的位置,一般不改

SCB->VTOR  = 0x10000000 & 0x3FFFFF80;

#else

SCB->VTOR  = 0x00000000 & 0x3FFFFF80;

#endif

}

LPC1788系统时钟初始化的更多相关文章

  1. ARM系统时钟初始化

    2440时钟体系,12MHz的晶振 6410时钟体系,12MHz的晶振 210时钟体系,24MHz晶振 时钟初始化:1.设置locktime 2.设置分频系数 4.设置CPU到异步工作模式 3.设置f ...

  2. STM32入门系列-STM32时钟系统,自定义系统时钟

    在时钟树的讲解中我们知道,通过修改PLLMUL中的倍系数值(2-16)可以改变系统的时钟频率.在库函数中也有对时钟倍频因子配置的函数,如下: void RCC_PLLConfig(uint32_t R ...

  3. S5PV210初始化系统时钟

    S5PV210初始化系统时钟 S5PV210时钟体系S5PV210中包含3大类时钟domain,分别是主系统时钟domain (简称MSYS,下面将使用简称来进行相关讲解).显示相关的时钟domain ...

  4. STM32入门系列-STM32时钟系统,时钟初始化配置函数

    在前面推文的介绍中,我们知道STM32系统复位后首先进入SystemInit函数进行时钟的设置,然后进入主函数main.那么我们就来看下SystemInit()函数到底做了哪些操作,首先打开我们前面使 ...

  5. STM32入门-STM32时钟系统,时钟初始化配置函数

    在前面推文的介绍中,我们知道STM32系统复位后首先进入SystemInit函数进行时钟的设置,然后进入主函数main.那么我们就来看下SystemInit()函数到底做了哪些操作,首先打开我们前面使 ...

  6. STM32学习笔记(六) SysTick系统时钟滴答实验(stm32中断入门)

    系统时钟滴答实验很不难,我就在面简单说下,但其中涉及到了STM32最复杂也是以后用途最广的外设-NVIC,如果说RCC是实时性所必须考虑的部分,那么NVIC就是stm32功能性实现的基础,NVIC的难 ...

  7. STM32学习笔记:系统时钟和SysTick定时器

    原文:http://blog.sina.com.cn/s/blog_49cb42490100s60d.html 1.     STM32的时钟系统 在STM32中,一共有5个时钟源,分别是HSI.HS ...

  8. A9系统时钟用外部

     问个笨蛋的问题,,电脑主板的主频是由外部时钟倍频得来,还是内部时钟倍频?? [ARM11]瘋子 2015/5/5 19:08:16 @蓝凌风 [x86]蓝凌 2015/5/5 19:08:25 外部 ...

  9. 实时时钟、系统时钟和CPU时钟的区别

    http://blog.sina.com.cn/s/blog_68f909c30100pli7.html 实时时钟:RTC时钟,用于提供年.月.日.时.分.秒和星期等的实时时间信息,由后备电池供电,当 ...

随机推荐

  1. CI 框架 hooks 的调用方法

    流程:在hooks中写一个类 ,  在system/core/CodeIgniter.php  判断什么时候执行    hooks中的类      涉及到了php反射获取类  方法   方法中的注释 ...

  2. 灵感闪现 篇 (一) 2d场景 3d 效果

    中途打断一下 ,框架文档的 更新. 另开一篇主题为 灵感闪现的 板块. 在工作生活中,总有发现新事物或新东西 而让自己突然 灵感闪现的时候,那么这个时候,我必须要抓住,并尽快把 这份灵感实现下来. 之 ...

  3. Dom+2016/4/20

    元素.parentNode父节点 offsetParent

  4. Servlet与JSP的异同

    1.什么是Servlet A Java servlet is a Java programming language program that extends the capabilities of ...

  5. Chapter 1 First Sight——18

    But at least he sent me to an empty desk at the back without introducing me to the class. 但是最后他给我最后面 ...

  6. 当浏览器窗体改变时,div跟着变动方法

    $(function(){ resizeU(); $(window).resize(resizeU); }); function resizeU() { var divkuangH = $(windo ...

  7. Servlet程序开发-- servlet跳转

    跳转:服务器端,客户端 客户端跳转:<response.sendRedirect>地址栏跳转之后改变,无法传递request范围的属性 服务器端跳转:<jsp:forward> ...

  8. Entity Framework 学习初级篇2--ObjectContext、ObjectQuery、ObjectStateEntry、ObjectStateManager类的介绍

    本节,简单的介绍EF中的ObjectContext.ObjectQuery.ObjectStateEntry.ObjectStateManager这个几个比较重要的类,它们都位于System.Data ...

  9. Mysql 随机查询数据

    SELECT * FROM tablename ORDER BY RAND() LIMIT 10

  10. 关于tomcat启动没有进行编译或者编译报错的问题

    关于tomcat 的问题 如果项目没有编译 解决方案:1: 把项目刷新一下 然后Clean一下,之后等待右下角编译完成100%2: 有可能tomcat conf 里的配置文件的错误 进入查看下3: 如 ...