噪声和噪音的区别:定时器的超时任务管理程序
来源:百度文库 编辑:中财网 时间:2024/05/05 08:27:47
[ 2009-10-20 1:49:00 | By: yi19101 ]
1
推荐
仿人机器人日志撰写之余,给出一个定时器超时管理程序,相信对大家很有用处。
主要是实现:
1.定时任务处理,例如10ms处理一个任务
2.按规定次数执行定时任务,例如20ms处理一个任务,处理10次,定时任务结束时处理另外一个任务
3.任务有优先级,任务号越低,优先级越高
以下只给出h文件定义,详细代码见附件
//=======================================
//===========以下是h文件=================
//===========以8051F020为例==============
//=======================================
#ifndef __REALTIME_H__
#define __REALTIME_H__
//系统时钟
#define SYS_CLK 22.118400 //Mhz
//定时器重要时间
#define INT_TIME_MS 25 //定时器中断,单位ms
#define TIMES_NETSEND 40 //网络发送定时器,40*25=1000ms
#define TIMES_BEEPON 40 //Beep开时间,*25=1s;Beep关时间,*25=0.5s
#define TIMES_BEEPOFF 20
//定时器状态
#define TIME_STATUS_RUNNING (1)//启动状态
#define TIME_STATUS_STOPED (0)//停止状态
//定时器操作函数
int RealTimerStart(float u_ms);//启动定时器ms,给定参数
void RealTimerStop(void); //停止定时器
void TimeOutRountine(void); //时间到服务程序
//定时器管理结构体
struct _TIMER_MANAGE
{
uchar RealTimerStatus; //定时器状态
float TimerInterval; //定时器时间间隔,单位ms
unsigned long ISR_Counter;//中断计数器
int (*RTimerStart)(float);
void (*RTimerStop)(void);
void (*TimeOutRountine)(void);
};
//定时器管理结构体初始化
#define REALTIMERINI {\
TIME_STATUS_STOPED,\
INT_TIME_MS,\
0,\
RealTimerStart,\
RealTimerStop,\
TimeOutRountine\
}
//超时任务数目,超时任务号越低,优先级越高
#define TIMEOUT_TASK_NUM 4
#define TIMEOUT_TASK_NETSEND (0)
#define TIMEOUT_TASK_BEEP (1)
#define TIMEOUT_TASK_TEMP (2)
#define TIMEOUT_TASK_DELAY (3)//延时任务
//超时计数器类型,unsigned char/unsigned int
#define TIMER_COUNTER_TCHAR 0x00
#define TIMER_COUNTER_TINT 0x01
#define TIMER_COUNTER_TYPE TIMER_COUNTER_TCHAR//默认char型
//时间超时管理结构体
struct _TIMEOUT_TASK_MANAGE {
uchar TimerEnable; //定时器使能
#if TIMER_COUNTER_TYPE==TIMER_COUNTER_TCHAR
uchar TimerOutNum; //定时器时间长度,定义为char型,最大计数单元为
uchar TimerCounter; //定时器计数值,定义为char型,最大计数单元为
#else
uint TimerOutNum; //定时器时间长度,定义为int型,最大计数单元为
uint TimerCounter; //定时器计数值,定义为int型,最大计数单元为
#endif
uchar TimerOutFlag; //超时标志
uchar TimerOutRunNum; //执行次数,char型,执行次数为-255,当给定为时,执行无数次
uchar TimerOutRunFinish; //执行次数完成
void (*TimeOutTask)(void);//初始处理任务
void (*TimeOutRunFinishTask)(void);//执行完成触发的任务
};
//定时器超时任务函数
void TimeOutTaskManageIni(void);//定时器任务初始化
int PreciseDelayTime(float u_ms); //精确延时程序
#endif
1
推荐
仿人机器人日志撰写之余,给出一个定时器超时管理程序,相信对大家很有用处。
主要是实现:
1.定时任务处理,例如10ms处理一个任务
2.按规定次数执行定时任务,例如20ms处理一个任务,处理10次,定时任务结束时处理另外一个任务
3.任务有优先级,任务号越低,优先级越高
以下只给出h文件定义,详细代码见附件
//=======================================
//===========以下是h文件=================
//===========以8051F020为例==============
//=======================================
#ifndef __REALTIME_H__
#define __REALTIME_H__
//系统时钟
#define SYS_CLK 22.118400 //Mhz
//定时器重要时间
#define INT_TIME_MS 25 //定时器中断,单位ms
#define TIMES_NETSEND 40 //网络发送定时器,40*25=1000ms
#define TIMES_BEEPON 40 //Beep开时间,*25=1s;Beep关时间,*25=0.5s
#define TIMES_BEEPOFF 20
//定时器状态
#define TIME_STATUS_RUNNING (1)//启动状态
#define TIME_STATUS_STOPED (0)//停止状态
//定时器操作函数
int RealTimerStart(float u_ms);//启动定时器ms,给定参数
void RealTimerStop(void); //停止定时器
void TimeOutRountine(void); //时间到服务程序
//定时器管理结构体
struct _TIMER_MANAGE
{
uchar RealTimerStatus; //定时器状态
float TimerInterval; //定时器时间间隔,单位ms
unsigned long ISR_Counter;//中断计数器
int (*RTimerStart)(float);
void (*RTimerStop)(void);
void (*TimeOutRountine)(void);
};
//定时器管理结构体初始化
#define REALTIMERINI {\
TIME_STATUS_STOPED,\
INT_TIME_MS,\
0,\
RealTimerStart,\
RealTimerStop,\
TimeOutRountine\
}
//超时任务数目,超时任务号越低,优先级越高
#define TIMEOUT_TASK_NUM 4
#define TIMEOUT_TASK_NETSEND (0)
#define TIMEOUT_TASK_BEEP (1)
#define TIMEOUT_TASK_TEMP (2)
#define TIMEOUT_TASK_DELAY (3)//延时任务
//超时计数器类型,unsigned char/unsigned int
#define TIMER_COUNTER_TCHAR 0x00
#define TIMER_COUNTER_TINT 0x01
#define TIMER_COUNTER_TYPE TIMER_COUNTER_TCHAR//默认char型
//时间超时管理结构体
struct _TIMEOUT_TASK_MANAGE {
uchar TimerEnable; //定时器使能
#if TIMER_COUNTER_TYPE==TIMER_COUNTER_TCHAR
uchar TimerOutNum; //定时器时间长度,定义为char型,最大计数单元为
uchar TimerCounter; //定时器计数值,定义为char型,最大计数单元为
#else
uint TimerOutNum; //定时器时间长度,定义为int型,最大计数单元为
uint TimerCounter; //定时器计数值,定义为int型,最大计数单元为
#endif
uchar TimerOutFlag; //超时标志
uchar TimerOutRunNum; //执行次数,char型,执行次数为-255,当给定为时,执行无数次
uchar TimerOutRunFinish; //执行次数完成
void (*TimeOutTask)(void);//初始处理任务
void (*TimeOutRunFinishTask)(void);//执行完成触发的任务
};
//定时器超时任务函数
void TimeOutTaskManageIni(void);//定时器任务初始化
int PreciseDelayTime(float u_ms); //精确延时程序
#endif
哈尔滨哪有卖定时器的?
洗衣机的定时器
西安哪有卖定时器的
空调的睡眠定时器和定时器有什么区别?
有关NOKIA定时器的问题,
霓虹灯电源定时器的使用
急!555定时器的检测
555定时器名称的由来?
启动高端内存的管理程序
请有好的广告管理程序asp
编个简单的管理程序
关于ASP的广告管理程序
台湾火线任务连接超时?
如何一开机便自动运行任务管理程序?谢谢
机械式定时器的结构是怎么样的?
诺基亚1600的定时器是干什么的
单片机定时器/计数器初始化的计算方法
赛文的胸前为什么没有定时器。
用单片机做定时器的问题
电风扇的那个定时器怎么修??
什么是13位定时器的特性
救命啊!我的windows进程管理程序!!
网站管理程序是怎么用的?
网站的后台管理程序哪儿有啊?