📄 timer.h
字号:
/********************************************************************
*Copyright-(c) 2003, *
*All rights reserved. *
* *
* 文件名称: TIMER.H *
* 摘要 : Headfile of TIMER.C *
* for 80x86 *
* *
* 当前版本: 2.1 *
* 作者 : Liy-tj *
* 完成日期: 2004年3月3日 *
*********************************************************************/
/********************************************************************
全局变量外部引用
*********************************************************************/
#ifdef TMR_GLOBALS
#define TMR_EXT
#else
#define TMR_EXT extern
#endif
/********************************************************************
常量、宏定义
*********************************************************************/
#define TMR_FREE 0xFE //空计时器
#define TMR_EN 0x01 //有计时器
#define TMR_RUN 0x03 //运行
#define TMR_STOP 0xFD //停止
#define TMR_FLG_UP 0x04 //触发标志位置高
#define TMR_FLG_DOWN 0xFB //触发标志位置低
#define TMR_MOD 0x30 //工作模式
#define TMR_MOD_CONT 0x00 //连续工作
#define TMR_MOD_ONCE 0x10 //一次工作
#define TMR_MOD_DELAY 0x20 //延迟
#ifndef UNIT_TYP_DEF
#define UNIT_NS 0
#define UNIT_US 1 //定时单位,微秒(缺省)
#define UNIT_MS 2 //定时单位,毫秒
#define UNIT_S 3 //定时单位,秒
#endif
#define TMR_TICK_LENGTH 10000 //定义计时器节拍周期,单位为us
#define MAX_TMR 12 //定义系统需要最多计时器个数
#define TMR_LARG_RANG //计时器计时范围————大范围
/**************************模块功能裁减******************************/
//#define TMR_SET_EN //允许修改定时器
//#define TMR_DELAY_EN //允许延迟函数
#define TMR_DELET_EN //允许删除计时器
//#define TMR_INTR_FNCT_EN //允许中断内调用任务函数
//#define TMR_SET_FNCT_EN //允许计时器任务函数可以在运行中修改
//#define TMR_CALL_FNCT_EN //允许直接调用计时器任务函数
#define TMR_RELOAD_EN //允许计时器重载
/********************************************************************
类型定义
*********************************************************************/
typedef INT8U TMR_ID; //计时器ID类型
/********************************************************************
全局变量
*********************************************************************/
//#ifdef TMR_GLOBALS
TMR_EXT INT8U TmrSta[MAX_TMR]; //计时器控制状态寄存器数组
//bit0 : TMREN 计时器使能位
//bit1 : TMRRUN计时器运行状态位
//bit2 : TMRFLG计时器触发标志位
//bit3 : 保留位
//bit4~5: TMRMOD计时器工作模式
//bit6~7: 保留位
#ifdef TMR_LARG_RANG
TMR_EXT INT32U TmrCtr [MAX_TMR]; //计时器计数值数组
TMR_EXT INT32U TmrInit[MAX_TMR]; //计时器初始值数组
#else
TMR_EXT INT16U TmrCtr [MAX_TMR];
TMR_EXT INT16U TmrInit[MAX_TMR];
#endif
#ifdef TMR_INTR_FNCT_EN
//指向在中断过程中运行的函数的指针数组
TMR_EXT void (*TmrIntFnct[MAX_TMR])(void);
#endif
//指向在中断过程外运行的函数的指针
TMR_EXT void (*TmrFnct[MAX_TMR])(void);
//#endif
/**********************************************************************
模块接口函数
***********************************************************************/
#ifdef TMR_LARG_RANG
TMR_ID TMR_Create(INT32U tmrinit, INT8U tmrunit, INT8U tmrmod,
void (*intfnct)(void), void (*fnct)(void));
void TMR_SetLen(INT8U tmrid, INT32U tmrinit, INT8U tmrunit);
void TMR_Set(INT8U tmrid, INT32U tmrinit, INT8U tmrunit, INT8U tmrmod,
void (*intfnct)(void), void (*fnct)(void));
void TMR_LongDelay(INT32U delaylen, INT8U tmrunit, void (*fnct)(void));
INT32U TMR_GetCtr(TMR_ID tmrid);
#else
TMR_ID TMR_Create(INT16U tmrinit, INT8U tmrunit, INT8U tmrmod,
void (*intfnct)(void), void (*fnct)(void));
void TMR_SetLen(INT8U tmrid, INT16U tmrinit, INT8U tmrunit);
void TMR_Set(INT8U tmrid, INT16U tmrinit, INT8U tmrunit, INT8U tmrmod,
void (*intfnct)(void), void (*fnct)(void));
void TMR_LongDelay(INT16U delaylen, INT8U tmrunit, void (*fnct)(void));
INT16U TMR_GetCtr(TMR_ID tmrid);
#endif
INT8U TMR_GetSta(TMR_ID tmrid);
void TMR_Init(void);
void TMR_Start(INT8U tmrid);
void TMR_Stop(INT8U tmrid);
void TMR_Reload(INT8U tmrid);
#ifdef TMR_INTR_FNCT_EN
void TMR_CallIntFnct(INT8U tmrid);
#endif
void TMR_CallFnct(INT8U tmrid);
void TMR_SetFnct(INT8U tmrid, INT8U tmrmod,
void (*intfnct)(void), void (*fnct)(void));
void TMR_Delete(INT8U *ptmrid);
void TMR_IntTask(void);
void TMR_Task(void);
/********************************************************************
宏定义
*********************************************************************/
#define TMR_CreateContMs(tmrinit,intfnct,fnct) TMR_Create((tmrinit),UNIT_MS,TMR_MOD_CONT,(intfnct),(fnct))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -