当前位置:首页 > 单片机 > 单片机
[导读]#ifndef __SYS_H_#define __SYS_H_#include "common.h"#define SystemCoreClock 120000000 //cpu时钟频率,计算时有用#define ApbClock 120000000 //120M#define EmcClock 60000000 //60M#define UsbClock 48000000 /

#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 s0012a

本文以6MHz时钟的单片机AT89C51系统为例,说明时钟中断的应用:

关键字: at89c51 中断 单片机 系统时钟

STM32F10x内核中都具有一个系统时钟基定时器,是一个24位的递减计数器。在其设置处置并使能后,每经过一个系统时钟周期,计数值减1.档计数值减到0时系统时基定时器又会自动重载初值。系统时基定时器每10ms就会产生一

关键字: STM32 系统时钟 基定时器

一、IO口数字输入/输出端口有下列特性:□ 每个输入/输出位都可以独立编程。□ 允许任意组合输入、输出。□ P1 和 P2 所有 8 个位都可以分别设置为中断。□ 可以独立操作输入和输出数据寄存器。□ 可以分别设置上拉或

关键字: io口 msp430f149 初始化

//时钟默认情况//FLL时钟FLL选择XT1//辅助时钟ACLK选择XT132768Hz//主系统时钟MCLK选择DCOCLKDIV1048576Hz//子系统时钟SMCLK选择DCOCLKDIV1048576Hz#i...

关键字: msp430f5438 初始化 xt1

1. STM32的时钟系统在STM32中,一共有5个时钟源,分别是HSI、HSE、LSI、LSE、PLL(1)HSI是高速内部时钟,RC振荡器,频率为8MHz;(2)HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部...

关键字: STM32 系统时钟

一些产品,当系统复位后(非上电复位),可能要求保持住复位前RAM中的数据,用来快速恢复现场,或者不至于因瞬间复位而重启现场设备。而keil mdk在默认情况下,任何形式的复位都会将RAM区的非初始化变量数据清零。

关键字: STM32 初始化 变量 复位 非零方法

1、C8051f的UART0是异步、全双工串口。其波特率发生器规定由定时器1定时器提供。可配置为8位UART或9位UART(多机通讯第九位用于片选作用)。SYSCLK=24.5MHZ(我的板子采用内部晶振频率作为系统时钟...

关键字: c8051f300 uart0 初始化 串口发送
关闭
关闭