📄 timer.c
字号:
//========================================================================//
// 文件名: Timer0.c
// 作 者: xinqiang Zhang(小丑) (email: xinqiang@Mzdesign.com.cn)
// 日 期: 2008/01/01
// 描 述: timer0的应用范例
//
// 参 考: Copyright(C) 2006, Philips Semiconductor Timer
// 版 本:
// 2008/01/01 First version Mz Design
//========================================================================//
#include "LPC22XX.h" //包含LPC22XX系列MCU的头文件
#include "type.h"
#include "irq.h"
#include "timer.h"
DWORD timer0_counter = 0;
//========================================================================//
// 函数: void Timer0Handler (void)
// 描述: 自定义的Timer0 VIC中断入口函数
// 参数: 无
// 返回: 无
// 备注: 提供全局计数变量timer_counter的自加功有,其它程序可利用它作后台延时
// 版本:
// 2008/01/01 First version
//========================================================================//
void Timer0Handler (void) __irq
{
IENABLE; //允许VIC中断嵌套
if(T0IR&0x01)
{
T0IR = 1; //清除中断标识
timer0_counter++;
}
if(T0IR&0x02)
{
T0IR = 2; //清除中断标识
}
if(T0IR&0x04)
{
T0IR = 4; //清除中断标识
}
IDISABLE;
VICVectAddr = 0; ///* Acknowledge Interrupt */
}
//========================================================================//
// 函数: void init_timer0(void)
// 描述: Timer0初始化函数
// 参数: 无
// 返回: 无
// 备注:
// 版本:
// 2008/01/01 First version
//========================================================================//
void init_timer0(void)
{
timer0_counter = 0; //后台计数器清零
T0PC = 0x000000000; //设置Timer0预分频值,Timer0的计数频率 = Tpclk/(T0PC+1)
T0MR0 = 55295; //设置匹配0的值,匹配周期 = 1/Timer0计数频率/(T0MR0+1) (s)
T0MCR = 0x03; //Timer0中断于匹配0(MR0),并在匹配0时清除计数器,Timer0停止计数
install_irq( TIMER0_INT, (void *)Timer0Handler ); //装载设置Timer0的VIC中断
}
//========================================================================//
// 函数: void enable_timer0(void)
// 描述: Timer0使能
// 参数: 无
// 返回: 无
// 备注:
// 版本:
// 2008/01/01 First version
//========================================================================//
void enable_timer0(void)
{
T0TCR = 1;
}
//========================================================================//
// 函数: void disable_timer0(void)
// 描述: Timer0停止
// 参数: 无
// 返回: 无
// 备注:
// 版本:
// 2008/01/01 First version
//========================================================================//
void disable_timer0(void)
{
T0TCR = 0;
}
//========================================================================//
// 函数: void reset_timer0(void)
// 描述: Timer0计数值复位
// 参数: 无
// 返回: 无
// 备注:
// 版本:
// 2008/01/01 First version
//========================================================================//
void reset_timer0(void)
{
DWORD regVal;
regVal = T0TCR;
regVal |= 0x02;
T0TCR = regVal;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -