/***************************************************************************** * uart.h: Header file for NXP LPC17xx Family Microprocessors * * Copyright(C) 2017,SensorControl * All rights reserved. * * History * 2009.05.27 ver 1.00 Prelimnary version, first Release *2017.01.10 ver 1.10 rename tick.h tick.c ******************************************************************************/ #ifndef __tick_H #define __tick_H #include "../clib/Type.h" #include "../msp/time.h" struct _s_nos_tick_ { vU32 jiffies; // noos系统定时器最小计时单元 vU32 t_1s; vU8 t1s_heatbeart; //noos 系统定时器整秒时刻标志,需要软件清除 // vU8 t_10ms; }; extern struct _s_nos_tick_ s_nos_tick; #if(TYPE_JIFFIES_5MS == D_sys_Jiffies) #define HZ 200 #elif(TYPE_JIFFIES_10MS == D_sys_Jiffies) #define HZ 100 #elif(TYPE_JIFFIES_25MS == D_sys_Jiffies) #define HZ 40 #endif #define JIFFIES (1000/HZ) #define D_sys_now (s_nos_tick.jiffies) //D_sys_delay_msec以jiffies为最小计时单位,jiffies是10ms为例,参数n=12ms时,最终延时了20ms #define D_sys_delay_msec(n) do{ \ if(n>0) \ { \ U32 mstmp = D_sys_now; \ while(D_sys_now - mstmp < (((n)-1)/JIFFIES) + 1); \ } \ }while(0) #define D_Tdelay_Msec(n) (((n)-1) / JIFFIES + 1) #define D_Tdelay_Sec(n) (((n)*1000-1) /JIFFIES + 1) #define D_Tdelay_5ms ((5-1) / JIFFIES + 1) #define D_Tdelay_10ms ((10-1) / JIFFIES + 1) #define D_Tdelay_20ms ((20-1) / JIFFIES + 1) #define D_Tdelay_50ms ((50-1) / JIFFIES + 1) #define D_Tdelay_100ms ((100-1) / JIFFIES + 1) #define D_Tdelay_200ms ((200-1) / JIFFIES+ 1) #define D_Tdelay_300ms ((300-1) / JIFFIES + 1) #define D_Tdelay_400ms ((400-1) / JIFFIES + 1) #define D_Tdelay_500ms ((500-1) / JIFFIES + 1) #define D_Tdelay_1s (1 * HZ) #define D_Tdelay_2s (2 * HZ) #define D_Tdelay_3s (3 * HZ) #define D_Tdelay_4s (4 * HZ) #define D_Tdelay_5s (5 * HZ) #define D_Tdelay_10s (10 * HZ) #define D_Tdelay_15s (15 * HZ) #define D_Tdelay_1min (1 * 60 * HZ) #define D_Tdelay_10min (10 * 60 * HZ) #define D_Tdelay_1h (60 * 60 * HZ) #define D_Tdelay_1day (24 * 60 * 60 * HZ) //必须配对 #define L0_nos_tick10ms_start(start_n) start_n = s_nos_tick.t_50ms #define L0_nos_tick10ms_interval(start_n) (s_nos_tick.t_50ms - start_n) #define L0_nos_tick1s_start(start_n) start_n = s_nos_tick.t_1s #define L0_nos_tick1s_interval(start_n) (s_nos_tick.t_1s - start_n) //>>>//必须配对 #define L2_tick_time_stamp(time_stamp) time_stamp = s_nos_tick.t_50ms; #define L2_tick_time_interval(time_stamp,time_overflow) (( s_nos_tick.t_50ms - time_stamp) > time_overflow) #define L3_tick_interval(x) L2_tick_time_interval(s_nos_tick.n_stamp,x) #define L2_tick_stamp() L2_tick_time_stamp(s_nos_tick.n_stamp); extern void L1_tick_init(void); extern void L1_tick_tick (void); #endif /* end __tick_H */ /***************************************************************************** ** End Of File ******************************************************************************/