基本信息
文件名称:NXP 系列:LPC15xx 系列 (基于 ARM Cortex-M3)_(15).LPC15xx系列定时器与计数器.docx
文件大小:25.05 KB
总页数:20 页
更新时间:2025-06-23
总字数:约1.05万字
文档摘要

PAGE1

PAGE1

LPC15xx系列定时器与计数器

定时器与计数器概述

LPC15xx系列单片机配备了多个定时器和计数器模块,这些模块在各种应用中起着关键作用,如周期性任务调度、延时生成、脉冲测量等。LPC15xx系列的定时器和计数器模块主要包括通用定时器(GeneralPurposeTimer,GPT)、系统定时器(SysTickTimer)以及脉宽调制定时器(PWMTimer)等。

通用定时器(GPT)

通用定时器(GPT)是LPC15xx系列中最常用的定时器模块之一。它提供了多个独立的定时器通道,每个通道可以配置为定时器或计数器模式。GPT的主要功能包括:

生成周期性中断

产生精确的延时

测量外部事件的间隔时间

生成PWM信号

系统定时器(SysTickTimer)

系统定时器(SysTickTimer)是ARMCortex-M3内核的一部分,主要用于操作系统定时器任务。它是一个24位的递减计数器,当计数器递减到0时,会产生一个中断。SysTickTimer的主要功能包括:

生成操作系统的时间片

产生周期性的中断

脉宽调制定时器(PWMTimer)

脉宽调制定时器(PWMTimer)用于生成PWM信号,这些信号在电机控制、LED亮度调节等应用中非常常见。PWMTimer的主要功能包括:

生成可配置频率和占空比的PWM信号

支持多个PWM通道

GPT的配置与使用

GPT寄存器

GPT模块通过一系列寄存器进行配置和控制。主要寄存器包括:

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

TimerPrescaleRegister(PR):设置定时器的预分频值。

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

TimerMatchRegister(TCx):匹配寄存器,用于生成中断或停止定时器。

TimerCaptureRegister(TCR):捕获寄存器,用于记录外部事件的时间戳。

TimerInterruptRegister(TINT):中断控制寄存器,用于配置中断使能和状态。

GPT配置步骤

初始化定时器:配置定时器的时钟源和预分频值。

设置匹配寄存器:配置定时器在特定计数值时产生中断。

使能中断:配置中断请求,确保定时器中断能够被处理器响应。

启动定时器:通过TCR寄存器启动定时器。

示例代码:配置GPT生成周期性中断

以下是一个示例代码,配置GPT生成每1秒一次的周期性中断。

#includeLPC15xx.h

#defineGPTIMER0_BASE(0x4001C000)

#defineLPC_GPTIMER0((LPC_GPTIMER_TypeDef*)GPTIMER0_BASE)

//定义中断处理函数

voidGPT_IRQHandler(void){

//清除中断标志

LPC_GPTIMER0-TISR|=(10);//清除匹配中断0

//处理中断

//例如:闪烁LED

LPC_GPIO_PORT-SET1[0]=(115);//设置LED高电平

LPC_GPIO_PORT-CLR1[0]=(115);//设置LED低电平

}

voidGPT_Init(void){

//使能GPT0时钟

LPC_SYSCON-SYSAHBCLKCTRL|=(112);//使能GPT0时钟

//配置GPT0为定时器模式

LPC_GPTIMER0-TCR=0x00;//停止定时器

LPC_GPTIMER0-CTCR=0x00;//选择定时器模式

//设置预分频值

LPC_GPTIMER0-PR=0x00FF;//预分频值,例如1000

//设置匹配寄存器

LPC_GPTIMER0-TC0=(SystemCoreClock/1000)*1000;//1秒中断

//使能中断

NVIC_EnableIRQ(GPT0_IRQn);//使能GPT0中断

LPC_GPTIMER0-TCCR|=(10);//使能匹配中断0

//启动定时器

LPC_GPTIMER0-TCR|=0x01;//启动定时器

}

intmain(void){

//初始化GPIO

LPC_SY