#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. ScrollView嵌套ViewPager 时候 Pager左右滑动不流畅

    //触摸事件 pager.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v ...

  2. linux shell 远程执行命令

    经常要部署多台服务器上面的应用,如果一个个机器的登录太麻烦. 所有就想到编写一个脚本来部署不同的服务器 前提条件: 配置ssh免登陆 如果不会的请参加我的另外一篇文章 http://blog.csdn ...

  3. 《JavaScript高级程序设计》读书笔记 ---变量

    ECMAScript 的变量是松散类型的,所谓松散类型就是可以用来保存任何类型的数据.换句话说,每个变量仅仅是一个用于保存值的占位符而已.定义变量时要使用var 操作符(注意var 是一个关键字),后 ...

  4. java 常见异常总结

    异常1:java.util.NoSuchElementException: No line found 原因:Java 是顺序执行的 你执行到.close() 后就代表 你关闭了 流,你再去调用已经被 ...

  5. 将项目同时托管到Github和Git@OSC

    http://my.oschina.net/GIIoOS/blog/404555?fromerr=KHvn8UKH 摘要 Github是最大的git代码托管平台,​GIT@OSC是国内最大的git代码 ...

  6. iptables详解--转

    出处:http://yijiu.blog.51cto.com/433846/1356254 iptables详解 基本概念: 1.防火墙工作在主机边缘:对于进出本网络或者本主机的数据报文,根据事先设定 ...

  7. Struts2 语法--action

    xml的注释: <!--叨叨叨叨--> web.xml注释格式": <?xml version="1.0" encoding="UTF-8&q ...

  8. 配置Eclipse支持java和xml文件的代码补全功能

    百度经验:jingyan.baidu.com 本文介绍如何配置Eclipse,使得在编写代码时无论是*.java还是*.xml文件都能够通过使用ALT+/快捷键实现代码不全的功能. 本文实验环境为:W ...

  9. json optString getString

    optString 和 getString 区别.   optString 当接收到的为空时候  不会报错

  10. 计算n!的位数<Math>

    题意:如题目. 方法一:<TLE> * 可设想n!的结果是不大于10的M次幂的数,即n!<=10^M(10的M次方),则不小于M的最小整数就是 n!的位数,对 * 该式两边取对数,有 ...