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

📄 timer_queue.h

📁 无线传感器星型网络的节点的基站程序,采用802.15.4协议
💻 H
字号:
//----------------------------------------------------//
//-------Institute Of  Computing Technology-----------//
//------------Chinese Academic  Science---------------//
//-----中国科学院计算技术研究所先进测试技术实验室-----//
//----------------------------------------------------//

/**
 * @copyright:nbicc_lpp
 * @this is timer queue header
 * @author liulingyi      (lingyiliu@ict.ac.cn)
 *              
 * @data:2005.11.18
 * @version:0.0.1
 * @updata:$
 *
 */



#ifndef _TIMER_QUEUE_H
#define _TIMER_QUEUE_H

#include "generic.h"
//#include "project.h"

enum timer_type_value {
  TIMER_REPEAT = 0, 
  TIMER_ONE_SHOT = 1, 
  NUM_TIMERS = 3
};

enum timer_reason {
	WAIT_FOR_ACK  =0,        //定时长度对应于macAckWaitDuration个symbol
	WAIT_FOR_RESPONSE  =1,   //定时长度对应于aResponseWaitTime个symbol
	WAIT_FOR_DATA      =2,   //定时长度对应于aMaxFrameResponseTime个symbol
	WAIT_SCAN            =3 ,  //定时长度对应于aBaseSuperframeDuring*(2*n+1)个symbol
	WAIT_FOR_BEACON      =4 ,  //定时长度对应于超帧周期长度
  WAIT_FOR_MAX_INTERVAL =5, //定时长度对应于MAX_TIMER_INTERVAL
};

#define  MAX_TIMER_INTERVAL  0xffff
#define  PRE_DEFINED_SCALE   1024

#define  NULL    0x0000


//是个定时的队列
struct TimerM_timer_queue {
  BYTE    timer_type;      //是周期性的还是一次性的。
  BYTE    framedsn;     //区分该定时是针对哪个帧的。
  BYTE    timer_reason;    //指明定时原因,是ack定时,响应应答定时, 数据请求应答定时,或定时为0xffff
  WORD   ticks;           //从当前时刻算起,定时多少个时钟clock
  DWORD   ticksLeft;       //需要设置的比较寄存器的值。
  struct  TimerM_timer_queue *   next;  //指向下一个定时器队列元素
} ;
typedef struct TimerM_timer_queue *  Timer_Queue_pointer ;
//供高层调用的相关函数声明
void  timer3queue_init(Timer_Queue_pointer queue_head);//初始化函数,主要用于设置好T1定时器的比较寄存器和分频系数,比较寄存器设为0xffff.并初始化队列第一个元素。
Timer_Queue_pointer timer3queue_start(Timer_Queue_pointer queue_head, BYTE timertype, BYTE framedsn, BYTE timer_reason, WORD ticks);//开始一个新的定时任务,主要功能是将当前任务插入到定时队列中,并设置好相应的值 
Timer_Queue_pointer timer3quere_cancel(Timer_Queue_pointer queue_head, BYTE framedsn, BYTE timer_reason);//取消一个定时任务

//供底层调用的函数声明
uint16_t  timer3queue_getnextinterval(void);
void  timer3queue_interrupt(void);

//T1时钟中断服务程序。当比较寄存器设置的值和计数器当前值相等时候,产生中断服务程序。
/*void __attribute((interrupt))   __vector_12(void);*/
//中断服务程序产生一个新的任务
#endif

⌨️ 快捷键说明

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