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

}

时间: 2024-07-29 20:42:08

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

中颖系统时钟初始化

/*1:中颖79f系列有4中振荡类型,4个震荡IO,可以从4中振荡类型中产生1种或者2 中时钟. 2:4种振荡类型:32.768KHZ,晶振谐振器,陶瓷谐振器,内服RC(12M/128K/12.3M )振荡器. 3:编程时,振荡类型由编译选项选择确定. 4:系统时钟控制器 CLKCON 具体资料可看datasheet 5:具体操作如下:*/ //====时钟分频===== #define CLK_DIV1 0X00 #define CLK_DIV2 0X01 #define CLK_DIV4 0

ARM系统时钟初始化

2440时钟体系,12MHz的晶振 6410时钟体系,12MHz的晶振 210时钟体系,24MHz晶振 时钟初始化:1.设置locktime 2.设置分频系数 4.设置CPU到异步工作模式 3.设置fclk .text .global _start _start: b reset ldr pc, _undefined_instruction ldr pc, _software_interrupt ldr pc, _prefetch_abort ldr pc, _data_abort ldr pc

28.时钟初始化

28.时钟初始化 ARM系统时钟初始化: 这就需要知道什么是时钟脉冲信号,什么是时钟频率,什么是时钟源. 时钟脉冲信号: 时钟脉冲信号:按一定的电压幅度,一定的时间间隔连续发出的脉冲信号.时钟脉冲信号是时序逻辑的基础,它用于决定逻辑单元中的状态何时更新.数字芯片中众多的晶体管都工作在开关状态,它们的导通和关断动作无不是按照时钟信号的节奏进行的 时钟脉冲图解: 1.2时钟脉冲频率: 时钟脉冲频率:就是在单位时间,如1秒,内产生的时钟脉冲个数. 1.3信号产生: 如何产生时钟信号:1.晶振2.锁相环

8.时钟初始化

ARM系统时钟初始化: ????这就需要知道什么是时钟脉冲信号,什么是时钟频率,什么是时钟源. 时钟脉冲信号: 时钟脉冲信号:按一定的电压幅度,一定的时间间隔连续发出的脉冲信号.时钟脉冲信号是时序逻辑的基础,它用于决定逻辑单元中的状态何时更新.数字芯片中众多的晶体管都工作在开关状态,它们的导通和关断动作无不是按照时钟信号的节奏进行的 时钟脉冲图解: ? ? ? ? ? ????1.2时钟脉冲频率: 时钟脉冲频率:就是在单位时间,如1秒,内产生的时钟脉冲个数. ????1.3信号产生: 如何产生时

认识STM32的系统时钟

STM32共有五个时钟源,分别是: HSI是高速内部时钟.RC振荡器,频率为8MHz: HSE是高速外部时钟,频率范围为4~6MHz; (可接石英/陶瓷谐振器或者接外部时钟源) LSI是低速内部时钟,频率40kHz; (独立看门狗时钟源.可作RTC时钟源) LSE是低速外部时钟,频率为32.768kHz石英晶体; (主要RTC时钟源) PLL是锁相环倍频输出,频率可选择为HSI/2.HSE或者HSE/2.倍频可选择2~16倍,但其输出频率最大不超过72MHz: 此处重点介绍系统时钟,一般其他所有

X-005 FriendlyARM tiny4412 uboot移植之时钟初始化

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<  开发环境:

【转】OAL之系统时钟

1. 系统时钟与内核的关系 WinCE 5.0采用基于时间片的抢占式多任务的实时内核,而且每个线程可以根据需要自行设定线程时间片的大小(参考CeSetThreadQuantum函数),默认为100ms,这个默认值dwDefaultThreadQuantum也可以在OEMInit()时自行设定.在内核源文件中,与单词Quantum有关的变量名一般是指时间片,WinCE内核定义了几个与时钟有关的全局变量,他们也是内核与OAL接口的一部分: 1) dwReschedTime,这个变量在内核的调度程序中

A9系统时钟用外部

问个笨蛋的问题,,电脑主板的主频是由外部时钟倍频得来,还是内部时钟倍频?? [ARM11]瘋子 2015/5/5 19:08:16 @蓝凌风 [x86]蓝凌 2015/5/5 19:08:25 外部[x86]蓝凌 2015/5/5 19:08:33 倍频 [ARM11]瘋子 2015/5/5 19:08:48 [ARM11]瘋子 2015/5/5 19:09:02 [ARM11]瘋子 2015/5/5 19:09:20 这个是A9的,,由24M---1.5g,,19:11:16[x86]蓝凌 2

6.SysTick系统时钟滴答实验(stm32中断入门)

系统时钟滴答实验很不难,我就在面简单说下,但其中涉及到了STM32最复杂也是以后用途最广的外设-NVIC,如果说RCC是实时性所必须考虑的部分,那么NVIC就是stm32功能性实现的基础,NVIC的难度并不高,但是理解起来还是比较复杂的,我会在本文中从实际应用出发去说明,当然最好去仔细研读宋岩翻译的<Cortex-M3权威指南>第八章,注意这不是一本教你如何编写STM32代码的工具书,而是阐述Cortex-M3内核原理的参考书,十分值得阅读. SysTick系统时钟的核心有两个,外设初始化和S