时钟框图如上图,系统时钟来源分别是内部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

最新文章

  1. 二十七、JDK1.5新特性---Annotation
  2. 常用的CSS Hack
  3. JAVA 聊天窗口
  4. asp.net Global.asax 方法的使用和说明
  5. python del函数
  6. Scrum 体验活动笔记
  7. curl_setopt函数相关应用及介绍(转)
  8. Java学习之网络编程
  9. Cocos2D-X扫盲之坐标系、锚点
  10. Java 的布局管理器GridBagLayout的使用方法(转)
  11. Python做的第一个小项目-模拟登陆
  12. python的学习笔记01_5文件操作
  13. 第一册:lesson109.
  14. shiro实战系列(十)之Subject
  15. EL表达式学习笔记
  16. 剑指offer总结
  17. hadoop学习day3 mapreduce笔记
  18. Ubuntu16.04多个版本GCC编译器的安装和切换【转】
  19. 图论&amp;数学:矩阵树定理
  20. HTTP 指纹识别v0.1

热门文章

  1. cell reuse &amp; disposebag
  2. makefile中使用echo向文件中输出版本号和编译时间
  3. [转]View属性 之 paddingStart &amp; paddingEnd
  4. [转]SSL协议详解
  5. PAT (Advanced Level) 1110. Complete Binary Tree (25)
  6. Linux系统编程读书笔记
  7. 关于python的可变和不可变对象
  8. VIJOS P1647 不差钱 SBT
  9. 未能读取并闩锁页 (1:xxxxx)(用闩锁类型 SH)
  10. hibernate事务并发问题(脏读,不可重复读,幻读)