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

📄 tick.c

📁 zigbee精简协议栈代码
💻 C
字号:
#include "Tick.h"


#define TICK_TEMP_VALUE   (65535-( (CLOCK_FREQ/TICK_PRESCALE_VALUE)/TICKS_PER_SECOND))

#if TICK_TEMP_VALUE < 5535
	#error timer set wrong 
#endif

#define TICK_COUNTER_HIGH       ((TICK_TEMP_VALUE >> 8) & 0xff)

#define TICK_COUNTER_LOW        (TICK_TEMP_VALUE & 0xff)

#if (TICK_PRESCALE_VALUE == 1)
    #define TIMER_PRESCALE  (1)
#elif ( TICK_PRESCALE_VALUE == 8 )
    #define TIMER_PRESCALE  (2)
#elif ( TICK_PRESCALE_VALUE == 64 )
    #define TIMER_PRESCALE  (3)
#elif ( TICK_PRESCALE_VALUE == 256 )
    #define TIMER_PRESCALE  (4)
#elif ( TICK_PRESCALE_VALUE == 1024 )
    #define TIMER_PRESCALE  (5)
#else
    #error Invalid _TICK_PRESCALE_VALUE_ specified.
#endif

TICK TickCount;

/*********************************************************************
 * Function:        void TickInit(void)
 *
 * PreCondition:    None
 *
 * Input:           None
 *
 * Output:          Tick manager is initialized.
 *
 * Side Effects:    None
 *
 * Overview:        Initializes Timer0 as a tick counter.
 *
 * Note:            None
 ********************************************************************/
void TickInit(void)
{
	//停止定时器
	TCCR1B = 0x00;
	TickCount = 0;
	
	//计数器初值 
	TCNT1L = TICK_COUNTER_LOW;
    TCNT1H = TICK_COUNTER_HIGH;
	
	TIMSK |= 0b00000000|BM(TOIE1);
	//定时器分频,开始定时
	TCCR1A = 0x00;
	TCCR1B = TIMER_PRESCALE;

}

/*********************************************************************
 * Function:        TICK TickGet(void)
 *
 * PreCondition:    None
 *
 * Input:           None
 *
 * Output:          Current second value is given
 *
 * Side Effects:    None
 *
 * Overview:        None
 *
 * Note:            None
 ********************************************************************/
TICK TickGet(void)
{
	TICK temp_count;
	TIMSK &=~ BM(TOIE1);
	temp_count = TickCount;
	TIMSK |= BM(TOIE1);
	
    return temp_count;
}

/*********************************************************************
 * Function:        void TickUpdate(void)
 *
 * PreCondition:    None
 *
 * Input:           None
 *
 * Output:          None
 *
 * Side Effects:    None
 *
 * Overview:        Internal Tick and Seconds count are updated.
 *
 * Note:            None

 ********************************************************************/
void TickUpdate(void)
{	
	TCNT1H = TICK_COUNTER_HIGH;
    TCNT1L = TICK_COUNTER_LOW;
	TickCount++;
}
	







⌨️ 快捷键说明

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