LPC1788系统时钟初始化
#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系统时钟初始化的更多相关文章
- ARM系统时钟初始化
2440时钟体系,12MHz的晶振 6410时钟体系,12MHz的晶振 210时钟体系,24MHz晶振 时钟初始化:1.设置locktime 2.设置分频系数 4.设置CPU到异步工作模式 3.设置f ...
- STM32入门系列-STM32时钟系统,自定义系统时钟
在时钟树的讲解中我们知道,通过修改PLLMUL中的倍系数值(2-16)可以改变系统的时钟频率.在库函数中也有对时钟倍频因子配置的函数,如下: void RCC_PLLConfig(uint32_t R ...
- S5PV210初始化系统时钟
S5PV210初始化系统时钟 S5PV210时钟体系S5PV210中包含3大类时钟domain,分别是主系统时钟domain (简称MSYS,下面将使用简称来进行相关讲解).显示相关的时钟domain ...
- STM32入门系列-STM32时钟系统,时钟初始化配置函数
在前面推文的介绍中,我们知道STM32系统复位后首先进入SystemInit函数进行时钟的设置,然后进入主函数main.那么我们就来看下SystemInit()函数到底做了哪些操作,首先打开我们前面使 ...
- STM32入门-STM32时钟系统,时钟初始化配置函数
在前面推文的介绍中,我们知道STM32系统复位后首先进入SystemInit函数进行时钟的设置,然后进入主函数main.那么我们就来看下SystemInit()函数到底做了哪些操作,首先打开我们前面使 ...
- STM32学习笔记(六) SysTick系统时钟滴答实验(stm32中断入门)
系统时钟滴答实验很不难,我就在面简单说下,但其中涉及到了STM32最复杂也是以后用途最广的外设-NVIC,如果说RCC是实时性所必须考虑的部分,那么NVIC就是stm32功能性实现的基础,NVIC的难 ...
- STM32学习笔记:系统时钟和SysTick定时器
原文:http://blog.sina.com.cn/s/blog_49cb42490100s60d.html 1. STM32的时钟系统 在STM32中,一共有5个时钟源,分别是HSI.HS ...
- A9系统时钟用外部
问个笨蛋的问题,,电脑主板的主频是由外部时钟倍频得来,还是内部时钟倍频?? [ARM11]瘋子 2015/5/5 19:08:16 @蓝凌风 [x86]蓝凌 2015/5/5 19:08:25 外部 ...
- 实时时钟、系统时钟和CPU时钟的区别
http://blog.sina.com.cn/s/blog_68f909c30100pli7.html 实时时钟:RTC时钟,用于提供年.月.日.时.分.秒和星期等的实时时间信息,由后备电池供电,当 ...
随机推荐
- JAVA-面向对象--封装
1. 如果一个类中没有定义构造函数,会自动加上一个空参的默认构造函数 如果定义了一个构造函数,默认的空参构造函数就没有了. 2. this 当成员变量与局部变量重名的时候,可以使用this来区分.th ...
- HDU/5499/模拟
题目链接 模拟题,直接看代码. £:分数的计算方法,要用double; #include <set> #include <map> #include <cmath> ...
- iOS 2.0 版本切入点
转载自:http://www.infoq.com/cn/articles/Version_2_0 移动互联网如火如荼,iOS 应用+ Android 应用+ 手机站似乎成了所有互联网公司的标配,你的网 ...
- mysql 入门 基本命令
MYSQL入门学习之一:基本操作 1.登录数据库 www.2cto.com 命令:mysql -u username –p (mysql -h主机地址 -u用户名 -p用户密码) ...
- HDU 5833 (2016大学生网络预选赛) Zhu and 772002(高斯消元求齐次方程的秩)
网络预选赛的题目……比赛的时候没有做上,确实是没啥思路,只知道肯定是整数分解,然后乘起来素数的幂肯定是偶数,然后就不知道该怎么办了… 最后题目要求输出方案数,首先根据题目应该能写出如下齐次方程(从别人 ...
- 1. Hyper上的CentOS 6.5 网络配置
在hyper上安装了一个centos系统, 默认安装的是命令行模式,网络默认是不开启的.由于是在虚拟机上安装的centos所以需要现在hyper上新添加一个网络适配器后然后再进行下面的设置: 登陆到r ...
- rabbitmq用于分布式系统
上文介绍了RabbitMQ在linux下的安装,这里就简单的介绍一下基于RabbitMQ的开发.RabbitMQ已经提供了一大坨材料. Java – http://www.RabbitMQ.com/j ...
- HDU 5240 Exam
The 2015 ACM-ICPC China Shanghai Metropolitan Programming Contest 2015ACM-ICPC上海大都会赛 签到题 #include< ...
- js跨域总结
一.通过jsonp跨域 在js中,我们直接用XMLHttpRequest请求不同域上的数据时,是不可以的.但是,在页面上引入不同域上的js脚本文件却是可以的,jsonp正是利用这个特性来实现的. 比如 ...
- 手机端android/iPhone问题
iPhone: 不能自动播放音乐, 去除默认样式 input:-webkit-appearance: none;border-radius:0px; video播放自动默认全屏解决-webkit-pl ...