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