?? 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 + -