LPC1768之时钟

一锁相环和CPU时钟。

CPU时钟=锁相环0输出/CPU时钟配置寄存器的预分频值即:Fcpu=Fcco/CCLKCFG+1。锁相环可以把外部时钟倍频到较高频率,PLL0输出频率是:

Fcco = (2xMxFin)/N;

M=MSEL0+1,N=NSEL0+1。MSEL0和NSEL0分别是PLL0CFG_Val 的低字和高字。N值得取值范围是1~32,而M的取值是在较高的振荡器频率下(超过1MHz)允许范围是6~512。

得到PLL0输出值之后,在经过CPU时钟配置寄存器就可以得到CPU时钟。

在这个system_lpc17xx.c文件中,修改#define PLL0CFG_Val           0x00050063的宏定义值就可以了。

例如:00050063这个状态下PLL0输出400MHz。

M = 0x63(16进制) + 1 = 100(10进制);

N = 0x05 + 1 =  6;

Fcco = 2X12x100/6 = 400M

Fcpu=Fcco/2^(CCLKCFG+1)=400M/4=100M.

分频值CCLKSEL只能是0和奇数值(1、3、5…,255),CCLK从PLL0输出信号中得到,通过CCLKSEL+1分频

二:定时器时钟:定时器可以使用PC和PR进行再分频

预分频系数:LPC_TIM1->PR

定时器的计数频率=Fcclk/LPC_TIM1->PR

重载值: LPC_TIM0->MR0

中断一次所需的时间=重载值/定时器的计数频率。

http://blog.csdn.net/aquakguo0he1/article/details/8513923

void delayMs(uint8_t timer_num, uint32_t delayInMs)
{
  if ( timer_num == 0 )
  {
        LPC_TIM0->TCR = 0x02;                /* reset timer */
        LPC_TIM0->PR  = 0x00;                /* set prescaler to zero */
        LPC_TIM0->MR0 = delayInMs * (9000000 / 1000-1);
        LPC_TIM0->IR  = 0xff;                /* reset all interrrupts */
        LPC_TIM0->MCR = 0x04;                /* stop timer on match */
        LPC_TIM0->TCR = 0x01;                /* start timer */

/* wait until delay time has elapsed */
        while (LPC_TIM0->TCR & 0x01);
  }
  else if ( timer_num == 1 )
  {
        LPC_TIM1->TCR = 0x02;                /* reset timer */
        LPC_TIM1->PR  = 0x00;                /* set prescaler to zero */
        LPC_TIM1->MR0 = delayInMs * (9000000 / 1000-1);
        LPC_TIM1->IR  = 0xff;                /* reset all interrrupts */
        LPC_TIM1->MCR = 0x04;                /* stop timer on match */
        LPC_TIM1->TCR = 0x01;                /* start timer */

/* wait until delay time has elapsed */
        while (LPC_TIM1->TCR & 0x01);
  }
  return;
}

二systick:

2.1时钟源:CPU提供货P3.26(STCLK)

2.2  10ms专用中断。若想循环产生中断则要定时装入STRELOAD,默认时间间隔在STCALIB中

2.3裸机专用定时的定时器

时间: 2024-12-09 07:27:05

LPC1768之时钟的相关文章

LPC1768菜鸟学习之时钟配置

LPC1768的时钟源可以来自三个: 1)内部RC振荡器 内部振荡器可看作看门狗定时器的时钟源,也可作PLL0和cpu的时钟源,但是无法作为usb的时钟源,因为精度达不到.而且如果CAN波特率高于100kb/s,则也不适用了.在系统上电时,LPC1768都使用内部振荡器,直到软件将其切换为另一种可用的时钟源. 2)主振荡器 主振荡器可作为CPU的时钟源,需要通过分频和倍频进行配置使用.基本会使用主振荡器作为时钟源 3)RTC振荡器 RTC振荡器可提供1Hz-32kHz的RTC时钟输出,可用作PL

LPC1768时钟配置

购买LPC1768已经有一段时间了,但是由于之前工作比较忙,一直没有来得及学习,所以搁置了一段时间. 最近终于有一些时间来学习了,板子上的资源其实还是蛮丰富的,cortex-m3有的,基本上在这个板子上都引出来了, 而且学习的帮助文档也不少,所以学习起来比较方便. 板子的样子如下图所示,具体的详细资源,各位可以自行去查找. 应该来说,板子的学习,肯定会逃不过时钟的配置,因此下面将我配置时钟的过程一一记录下来,以便后期工作需要. 其实LPC1768的时钟配置过程还是比较清晰的. LPC1768的时

LPC1768 时钟配置

1)内部RC振荡器 内部振荡器可看作看门狗定时器的时钟源,也可作PLL0和cpu的时钟源,但是无法作为usb的时钟源,因为精度达不到.而且如果CAN波特率高于100kb/s,则也不适用了.在系统上电时,LPC1768都使用内部振荡器,直到软件将其切换为另一种可用的时钟源. 2)主振荡器 主振荡器可作为CPU的时钟源,需要通过分频和倍频进行配置使用.基本会使用主振荡器作为时钟源 3)RTC振荡器 RTC振荡器可提供1Hz-32kHz的RTC时钟输出,可用作PLL0.CPU和看门狗定时的时钟源. L

lpc1768的系统时钟

#define XTAL_FREQ   12000000 #define VECT_TAB_OFFSET  0x0000 void SystemInit(void) { //PLL0时钟配置 LPC_SC->SCS       = 0X00000020;               /*使能外部主晶振,频率范围1-20M*/ if (LPC_SC->SCS & (1 << 5))                 /* 主时钟被使能  */ { while ((LPC_SC-

LPC1768基本输入输出GPIO使用

LPC1788通用IO口的控制包含了一些基本的组件,比如设置推挽输出,开漏输出,上拉电阻等,我们今天来看看. 首先使用GPIO要打开GPIO的系统时钟   LPC_SC->PCONP |= (1<<15);//gpio 时钟 然后需要选择我们选定引脚的功能,有些引脚有多个功能,通过寄存器可以从中选择一个   之后是设置相关引脚的外部电阻状态pinmode寄存器   然后设置开漏方式pinmode_od 到这里,引脚的基本功能就OK了,此时要操作GPIO还需要设置几个东西 输入输出方向FI

LPC1768外部中断与GPIO中断

LPC1768的外部中断严格来说只有四个,分别是EINT0,EINT1,EINT2,EINT3,技术手册上有如下说明 控制这四个外部中断靠以下寄存器 这三个寄存器的0 1 2 3位分别代表中断的0 1 2 3,EXTINT寄存器表示中断是否发生,在发生中断的时候该寄存器会置位,可以通过写1清零,EXTMODE寄存器表示触发模式,有电平触发和变化沿触发两种,EXTPOLAR与EXTMODE,在电平触发模式下,决定高电平还是低电平触发,在变化沿触发的情况下决定上升沿还是下降沿触发 这三个中断分别相关

LPC1768/1769之CAN控制器概述

一.背景: 使用LPC1769来做CAN的收发,在此对使用LPC1769的CAN控制器进行收发做个总结和记录,以备下 次开发快速上手使用. 附:LPC1768/1769除了支持最高频率不同以外,其它基本上一致. 二.正文: 先贴一张LPC1769 CAN控制器的方框图: . 由上图可见,整个CAN控制器一头是CPU,另一头是CAN收发器: CAN收发器负责CAN数据与CAN网络的通信.CAN内核模块解析和封装要发送到CAN收发器以及从CAN 收发器发过来的数据,此处CAN内核工作由硬件自行完成.

LPC1768的iic通讯

LPC1768有三路IIC,其中IIC0支持高速模式和plus模式,另外两路是普通IIC,使用IIC的过程如下 首先依然是打开IIC时钟,同时打开GPIO时钟 然后配置引脚为IIC功能 另外,因为iic0支持plus结构,所以gpio控制的时候还有这个寄存器需要设置 接下来设置IIC的高低电平占空比 最后使能接口就可以使用了 初始化示例代码如下 void IIC0Init(u32 baud) { u32 t = (SystemCoreClock/4)/baud; //打开IIC时钟 LPC_SC

LPC1768的IIS通讯

IIS是飞利浦公司定义的一种用于音频传输的数字总线,LPC1768支持该总线, I2S接口为一条3线串行总线,含有1根数据线.1根时钟线和1根字选择信号线.基本的I2S连接具有一个主机(其总是为主机)和一个从机.LPC1700系列Cortex—M3微控制器的I2S提供了彼此独立的发送和接收通道,每个通道都可作为主机或从机. 使用代码如下 void IISInit(void) { //打开IIS时钟 LPC_SC->PCONP |= 1<<27; LPC_SC->PCLKSEL1 &