⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timer.h

📁 Point RTOS 主要是一个针对小系统开发而设计的实时操作系统。 目前
💻 H
字号:
/*************************************************************************
*                           Point RTOS(51)                               *
*                 The Real-Time Kernel(For Keil c51)                     *
*                                                                        *
*                     (c) Copyright 2005, PenGH                          *
*                         All Rights Reserved                            *
*                                                                        *
*                               V0.9.1                                   *
*                                                                        *
*        File :  TIMER.H                                                 *
*      Author :  彭光红                                                  *
*     History :                                                          *
*                2005/08  By PenGH                                       *
*************************************************************************/


/*----------------------------------------------------------------------*/

#ifndef _TIMER_HEAD_

   #define _TIMER_HEAD_

#include ".\OS_CFG.H"
#include "..\..\..\8051CPU\OS_CPU.H"
#include "..\..\..\OS\Os_Core.h"

/*************************************************************************
*
*  DESCRIPTION : 定义日期时间类型
*
*************************************************************************/
#define OS_DATETIME_EN     1               /*  时间模块是否有效  */
#define OS_SYSTENSTICK_EN  0               /*  系统滴哒是否有效  */


#define OS_SHORT_TIME_EN   1

#if OS_SHORT_TIME_EN==0
  typedef  UINT32 TDateTime;
#else
  typedef  UINT16 TDateTime;
#endif


#ifdef  __IN_TIMER_FILE__
  #define  TIMER_EXT
#else
  #define  TIMER_EXT  extern
  #if OS_SYSTENSTICK_EN > 0
    TIMER_EXT TDateTime Os_Running_Times;
  #endif
#endif


/*************************************************************************
*
*  DESCRIPTION : 定义系统定时器的中断程序入口号,本系统使用定时器0,如有
*                更改,用户应同时更新此定义
*
*************************************************************************/
#define OS_TIMER_NO       1

/*************************************************************************
*
*  DESCRIPTION : 定义定时器的宽度,即是十六定时器还是八位定时器或其它
*                用户应根据应用的具体设定进行修改。
*
*************************************************************************/
#define OS_TIMER_WIDTH    16

/*************************************************************************
*
*  DESCRIPTION : 定义系统的每一个指令周期所耗时间,实际就是时钟晶振频率
*                本系统使用的是11.0592晶振,用户应根据实际的晶振频率进行
*                调整。
*
*************************************************************************/
#define OS_CLOCK_CYCLES   1085

/*************************************************************************
*
*  DESCRIPTION : 定义应用中定时器的最小时间分度,根据应用不同,用户可以
*                按要求设定。
*
*************************************************************************/
#define OS_TIME_SCALE     50

/*************************************************************************
*
*  DESCRIPTION : 定义时间常数,此常与上面的定义参数相关联,定义此常数
*                是为了更方便用户进行时间参数设定而不必去修改内核代码。
*
*************************************************************************/
#if OS_TIMER_WIDTH==16
   #define OS_TIME_CONST     ( 65536-( (OS_TIME_SCALE*1000000)/(OS_CLOCK_CYCLES) ) )
#else
  #if OS_TIMER_WIDTH==8
     #define OS_TIME_CONST     ( 256-( (OS_TIME_SCALE*1000000)/(OS_CLOCK_CYCLES) ) )
  #endif
#endif

/*************************************************************************
*
*  DESCRIPTION : 系统定时器初始化
*
*************************************************************************/
#define OS_TIMER_INIT()   do{\
                              TL0=OS_TIME_CONST%256;\
							  TH0=OS_TIME_CONST/256;\
         	                  TR0 = 1;/*定时器启动*/\
                              ET0 = 1;/*定时器中断打开*/\
					      }while(0)


/*************************************************************************
*
*  DESCRIPTION : 定时器设置
*
*************************************************************************/
#define OS_TIMER_SET()  do{\
                          TL0=OS_TIME_CONST%256;\
   					      TH0=OS_TIME_CONST/256;\
                        }while(0)


/*时间模块函数定义*/
#if OS_DATETIME_EN>0

  #define  OS_DATETIME_TASK_DLY   5   /*定时器任务调用周期*/
  #define  TIMER_DATA_TYPE    xdata
  #define  OS_DATETIME_COUNT      5   /*定时器个数,最多八个*/
  #define  OS_DATETIMEFUNARG_EN   0   /*调用函数是否有参数,如果有
                                        此参数则使能此选区项*/

  typedef struct{
    UINT8 tmrCtrl;         /*定时器控制,即计数器*/
	void (*tmrCall)(void); /*定时器到调用函数指针*/
	#if OS_DATETIMEFUNARG_EN>0 
	void *tmrArg;         /*指向函数的参数,调用都应当设置此参数*/
	#endif
  }TTMR;

  typedef struct{
    UINT8   tmrTbl;                          /*计时器表*/
	TTMR    timer[OS_DATETIME_COUNT];        /*计时器*/
  }TTIMER;

  #ifndef __IN_TIMER_FILE__
    TIMER_EXT TTIMER TIMER_DATA_TYPE OSTmr;
  #endif

  TIMER_EXT void TmrTask(void);
  TIMER_EXT void TmrInit(UINT8 task_prio);
  TIMER_EXT void TmrStart(UINT8 ind,UINT8 cnt);
  TIMER_EXT void TmrStop(UINT8 ind);
  TIMER_EXT void TmrSetFunc(UINT8 ind,UINT8 cnt,void *pt);
  TIMER_EXT void TmrStep(UINT8 ind);
#endif

#endif


/* The end of file */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -