基本信息
文件名称:NXP 系列:LPC1100 系列_(20).LPC1100系列的定时器与计数器.docx
文件大小:27.51 KB
总页数:34 页
更新时间:2025-06-18
总字数:约1.63万字
文档摘要

PAGE1

PAGE1

定时器与计数器

定时器与计数器概述

定时器和计数器是嵌入式系统中非常重要的外设,广泛用于各种应用程序中,如延时控制、脉冲测量、定时任务调度等。LPC1100系列单片机配备了多个定时器和计数器模块,这些模块提供了丰富的功能和灵活性,可以满足各种应用需求。

LPC1100系列单片机的定时器和计数器主要包括以下几种:

系统定时器(SysTick):用于提供系统级的时间基准。

通用定时器(GeneralPurposeTimer,GPT):用于实现多种定时和计数功能。

看门狗定时器(WatchdogTimer,WDT):用于防止系统因软件故障而死机。

系统定时器(SysTick)

系统定时器(SysTick)是ARMCortex-M0内核的一部分,主要用于提供一个周期性的中断源,以便实现系统级的延时和定时任务。SysTick定时器是一个24位递减计数器,可以配置为周期性中断或一次性中断。

SysTick定时器的基本配置

SysTick定时器的配置主要涉及以下几个步骤:

使能SysTick定时器:通过设置控制寄存器(STCTRL)的使能位。

配置定时器的时钟源:可以选择内部时钟或外部时钟。

设置定时器的周期:通过设置重装载寄存器(STRELOAD)。

清除计数器值:通过设置当前值寄存器(STCURRENT)。

代码示例

以下是一个简单的代码示例,用于配置SysTick定时器以每1秒产生一次中断,并在中断处理程序中实现一个LED的闪烁。

#includeLPC11xx.h

//定义LED端口和引脚

#defineLED_PORTLPC_GPIO0

#defineLED_PIN0

//SysTick中断处理函数

voidSysTick_Handler(void){

//切换LED状态

if(LED_PORT-DATA(1LED_PIN)){

LED_PORT-DATA=~(1LED_PIN);

}else{

LED_PORT-DATA|=(1LED_PIN);

}

}

//配置SysTick定时器

voidSysTick_Config(uint32_tticks){

if(ticks0){

//使能SysTick定时器

SysTick-CTRL|=SysTick_CTRL_ENABLE_Msk;

//选择内部时钟

SysTick-CTRL|=SysTick_CTRL_CLKSOURCE_Msk;

//配置中断使能

SysTick-CTRL|=SysTick_CTRL_TICKINT_Msk;

//设置重装载值

SysTick-LOAD=(ticks-1);

//清除当前值

SysTick-VAL=0;

}

}

intmain(void){

//配置LED引脚为输出

LED_PORT-DIR|=(1LED_PIN);

//配置SysTick定时器,每1秒产生一次中断

SysTick_Config(SystemCoreClock/1000);//假设系统时钟为12MHz

while(1){

//主循环

}

}

通用定时器(GPT)

通用定时器(GPT)是LPC1100系列单片机中功能较为丰富的定时器模块。LPC1100系列提供了多个GPT模块,每个模块都可以配置为定时器或计数器模式,支持多种中断和触发方式。

GPT的基本配置

通用定时器的配置主要涉及以下几个步骤:

使能定时器时钟:通过设置时钟控制寄存器(SYSAHBCLKCTRL)。

配置定时器模式:可以选择定时器模式或计数器模式。

设置定时器的预分频器:通过设置预分频寄存器(PR)。

设置定时器的匹配值:通过设置匹配寄存器(MR0,MR1,MR2,MR3)。

使能中断:通过设置中断控制寄存器(MCR)。

代码示例

以下是一个简单的代码示例,用于配置GPT定时器以每1秒产生一次中断,并在中断处理程序中实现一个LED的闪烁。

#includeLPC11xx.h

//定义LED端口和引脚

#defineLED_PORTLPC_GPIO0

#defineLED_PIN0

//GPT中断处