LPC2478时钟模块详解
时钟框图如上图,系统时钟来源分别是内部4M的RC振荡器和外置晶振,RTC模块在某些情况下也可以作为主时钟,经过系统时钟选择s\de时钟需要经过PLL倍频(或者不倍频),处理过的PLL输出USB时钟分频器和CPU时钟分频器,成为FCCLK 和FUSBCLK,FCCLK供给系统内核,以太网模块,以及各式AHB外设,APB外设的时钟来自于PLLCLK,经过外设时钟发生器,分频出各个时钟供给外设使用,同时,时钟模块也能切断外设模块的时钟
另外,看门狗定时器有多重时钟可以选择,系统实时时钟也有多个模式的时钟源可以选择
使用时钟模块时,主要有以下注意事项
1. 切换时钟源的时候PLL必须被断开,否则无法切换成功
2. PLL输入时钟最大50M,产生的时钟最小275M
3. PLL配置寄存器的写入需要解锁,写入PLL数据之后必须要解锁写入的数据才能生效,如下
4. PLL设置过程如下
代码如下
#include "clock.h" u32 SystemCoreClock; void ClockSet(u8 clockSel)
{
if((PLLSTAT&(1<<25)))//如果PLL连接
{
PLLCON &= ~(1<<1);//断开PLL连接
PLLFEED = 0xAA;//发送馈送序列
PLLFEED = 0x55;
while((PLLSTAT&(1<<25)));//等待PLL断开连接
}
PLLCON &= ~(1<<0);//禁用PLL
PLLFEED = 0xAA;//发送馈送序列
PLLFEED = 0x55;
while((PLLSTAT&(1<<24)));//等待PLL禁止
if(clockSel == CLOCK_HSE) //选择外部时钟
{
SCS &= ~(1<<4);//主振荡器频率选择1-20M
SCS |= (1<<5);//主振荡器使能
while((SCS&(1<<6)) == 0);//等待主振荡器准备好 CLKSRCSEL = 0x01;//选择主时钟源为PLL时钟
SystemCoreClock = 100000000; }
else if(clockSel == CLOCK_HSI)//选择内部时钟
{
CLKSRCSEL = 0x00;//选择内部RC振荡器为系统时钟源
SystemCoreClock = 100000000;
}
PLLCFG = 0x00050063; // 选择PLL倍频 N 6 M 100 12M 2*100*4/2 = 400M
PLLFEED = 0xAA;//发送馈送序列
PLLFEED = 0x55; PLLCON |= 0x01; /* 使能PLL */
PLLFEED = 0xAA;
PLLFEED = 0x55;
while (!(PLLSTAT & (1<<24)));/* 等待PLL0使能 */
// while (!(PLLSTAT & (1<<26)));/* 等待PLL0锁定 */ //修改cpu分频数值
CCLKCFG = 0x03;//四分频 400/4 = 100M PLLCON |= (1<<1); /* 连接PLL */
PLLFEED = 0xAA;
PLLFEED = 0x55;
while (!(PLLSTAT & (1<<25)));/* 等待PLL连接 */ //此时,PLL时钟就OK了,接下来需要设置外设的分频数
PCLKSEL0 = 0x00000040;//外设时钟均为25M
PCLKSEL1 = 0x00000000; PCONP = 0x00000000;//禁用全部外设时钟
}
#ifndef __CLOCK_H_
#define __CLOCK_H_ #include "lpc24xx.h"
#include "common.h" #define CLOCK_HSE 1
#define CLOCK_HSI 2 void ClockSet(u8 clockSel); extern u32 SystemCoreClock; #endif
LPC2478时钟模块详解的更多相关文章
- Python中操作mysql的pymysql模块详解
Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持 ...
- python之OS模块详解
python之OS模块详解 ^_^,步入第二个模块世界----->OS 常见函数列表 os.sep:取代操作系统特定的路径分隔符 os.name:指示你正在使用的工作平台.比如对于Windows ...
- python之sys模块详解
python之sys模块详解 sys模块功能多,我们这里介绍一些比较实用的功能,相信你会喜欢的,和我一起走进python的模块吧! sys模块的常见函数列表 sys.argv: 实现从程序外部向程序传 ...
- python中threading模块详解(一)
python中threading模块详解(一) 来源 http://blog.chinaunix.net/uid-27571599-id-3484048.html threading提供了一个比thr ...
- python time 模块详解
Python中time模块详解 发表于2011年5月5日 12:58 a.m. 位于分类我爱Python 在平常的代码中,我们常常需要与时间打交道.在Python中,与时间处理有关的模块就包括: ...
- python time模块详解
python time模块详解 转自:http://blog.csdn.net/kiki113/article/details/4033017 python 的内嵌time模板翻译及说明 一.简介 ...
- 小白的Python之路 day5 time,datatime模块详解
一.模块的分类 可以分成三大类: 1.标准库 2.开源模块 3.自定义模块 二.标准库模块详解 1.time与datetime 在Python中,通常有这几种方式来表示时间:1)时间戳 2)格式化的时 ...
- 小白的Python之路 day5 random模块和string模块详解
random模块详解 一.概述 首先我们看到这个单词是随机的意思,他在python中的主要用于一些随机数,或者需要写一些随机数的代码,下面我们就来整理他的一些用法 二.常用方法 1. random.r ...
- Python中time模块详解
Python中time模块详解 在平常的代码中,我们常常需要与时间打交道.在Python中,与时间处理有关的模块就包括:time,datetime以及calendar.这篇文章,主要讲解time模块. ...
随机推荐
- math ceil以及math floor,math:round
◎Math.ceil()执行向上舍入,即它总是将数值向上舍入为最接近的整数:◎Math.floor()执行向下舍入,即它总是将数值向下舍入为最接近的整数:◎Math.round()执行标准舍入,即它总 ...
- 将所需要的图标排成一列组成一张图片,方便管理。li的妙用
我在做一个网站的header 但是视频教学里面将电话图标,微信图标,以及每一个英文字母右边的小点拼成一副图. (图片的名字是top_ioc.png)拼成的整个图片作为li的背景.通过移动就可以分别将每 ...
- 简单时钟——css3
这里我们使用css3的特性制作一个简易的时钟,代码如下: <!DOCTYPE html><html> <head> <meta charset="U ...
- 学习笔记——抽象工厂模式Abstract Factory
在工厂模式的基础上,通过为工厂类增加接口,实现其他产品的生产,而不用一类产品就增加一个工厂. 依然以<真菌世界>游戏故事类比,树作为工厂,如果现在有两类树,一类生产快速弄真菌飞机和20毫米 ...
- JNDI深入浅出
1.什么是JNDI JNDI(The Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API.命名服务将名称和 ...
- 转:设置Loadrunner负载机临时文件目录
最近在跑稳定性测试 3 X 24小时的时候,发现负载机产生的日志还运行记录等等竟然有100多G! C盘空间不足,但是D盘还有700多G空间呢,怎么让临时文件转移到D盘? 此处分两种情况: 一. 修改本 ...
- java工程开发之图形化界面之(第三课)
上面我们讲述了通过JOptionPane进行文本I/O操作,一个是通过JOptionPane来获取的 参考链接:http://blog.sina.com.cn/s/blog_993d254201013 ...
- 素数个数的位数<Math>
小明是一个聪明的孩子,对数论有着很浓烈的兴趣.他发现求1到正整数10^n (10的n次方)之间有多少个素数是一个很难的问题,该问题的难点在于决定于10^n 值的大小. 告诉你n的值,并且用ans表示小 ...
- 文本属性Attributes 初步
转载自:http://www.cnblogs.com/qingche/p/3574995.html 1.NSKernAttributeName: @10 调整字句 kerning 字句调整 2.NSF ...
- 启动ipython notebook(jupyter)
启动本地notebook 随便找一个shell,在windows里,最简单的cmd.exe就行,键入: ipython.exe notebook