基本信息
文件名称:NXP 系列:LPC1768 (适用于复杂娱乐设备)_(15).LPC1768定时器和计数器.docx
文件大小:25.14 KB
总页数:20 页
更新时间:2025-06-15
总字数:约1.02万字
文档摘要

PAGE1

PAGE1

LPC1768定时器和计数器

定时器和计数器概述

LPC1768微控制器配备了多个定时器和计数器,这些定时器和计数器可以用于各种任务,如生成精确的时间延迟、测量外部信号的时间间隔、产生PWM信号等。LPC1768提供了四个通用定时器/计数器(Timer0、Timer1、Timer2和Timer3),每个定时器都具有多种工作模式和丰富的功能。

定时器的工作模式

LPC1768的定时器可以配置为以下几种工作模式:

定时器模式:用于生成固定的时间间隔。

计数器模式:用于测量外部事件的频率或周期。

PWM输出模式:用于生成脉宽调制信号。

捕获模式:用于捕捉外部事件的时间戳。

定时器的主要寄存器

每个定时器都有多个寄存器,用于配置和控制其行为。主要寄存器包括:

TCR(TimerControlRegister):控制定时器的启动和停止。

PR(PrescaleRegister):设置预分频器值。

TC(TimerCounterRegister):当前定时器计数值。

PC(PrescaleCounterRegister):当前预分频器计数值。

MCR(MatchControlRegister):控制匹配事件时的行为。

MR0-MR3(MatchRegister0-3):匹配值寄存器。

TCR(TimerControlRegister):控制定时器的启动和停止。

CTCR(CounterControlRegister):配置定时器为计数器模式。

CR(CaptureRegister):捕捉时间戳。

CCR(CaptureControlRegister):配置捕捉事件。

定时器配置和初始化

在使用定时器之前,需要对其进行配置和初始化。以下是一个详细的步骤,说明如何配置并初始化LPC1768的定时器。

步骤1:使能定时器时钟

首先,需要使能定时器的时钟。这可以通过设置电源管理控制器(PCONP)寄存器中的相应位来实现。

//使能Timer0的时钟

LPC_SC-PCONP|=(122);//PCONP位22对应Timer0

步骤2:配置定时器模式

接下来,需要配置定时器的工作模式。例如,将Timer0配置为定时器模式。

//配置Timer0为定时器模式

LPC_TIM0-CTCR=0x00;//0x00表示定时器模式

步骤3:设置预分频器

预分频器用于降低定时器的计数频率。例如,设置预分频器为1000,则定时器的计数频率为系统时钟频率除以1001。

//设置Timer0的预分频器为1000

LPC_TIM0-PR=1000;

步骤4:设置匹配值

匹配值寄存器用于设置定时器在达到某个特定值时触发事件。例如,设置Timer0的匹配值为1000000,表示定时器计数到1000000时触发中断。

//设置Timer0的匹配值为1000000

LPC_TIM0-MR0=1000000;

步骤5:配置匹配控制

匹配控制寄存器用于配置定时器在匹配事件时的行为。例如,配置Timer0在匹配值达到时触发中断。

//配置Timer0在匹配值达到时触发中断

LPC_TIM0-MCR=(10);//位0表示MR0事件时触发中断

步骤6:使能定时器中断

使能定时器中断,确保中断服务例程(ISR)可以被调用。

//使能Timer0的中断

NVIC_EnableIRQ(TIMER0_IRQn);

步骤7:启动定时器

最后,启动定时器。

//启动Timer0

LPC_TIM0-TCR=(10);//位0表示启动定时器

定时器中断服务例程

定时器中断服务例程(ISR)是定时器达到匹配值时执行的代码。以下是一个简单的ISR示例,用于在定时器中断时切换LED的状态。

#includeLPC17xx.h

#includeboard.h

//定义LED引脚

#defineLED_PORTLPC_GPIO0

#defineLED_PIN16

voidTIMER0_IRQHandler(void){

//清除中断标志

LPC_TIM0-IR=1;

//切换LED状态

if(LED_PORT-FIOSET==(1LED_PIN)){

LED_PORT-FIOCLR=(1LED_PIN);

}else{

LED_PORT-FIOSET=