You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

115 lines
3.9 KiB

4 years ago
/*****************************************************************************
* 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_heartbeat; //noos 系统定时器整秒时刻标志,需要软件清除
vU8 print_heartbeat;
vU32 n_stamp;
//// vU32 t_10ms;
vU32 t_50ms; // noos 系统定时器10m技术
// vU32 t1s_flag[6]; //fixme: INT32U 根据不同的系统来决定
//volatile unsigned char t1s_flag;
/// vU8 ts_flag;
vU32 n_stamp3;
4 years ago
// 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)
4 years ago
#define D_Tdelay_20ms ((20-1) / JIFFIES + 1)
#define D_Tdelay_30ms ((30-1) / JIFFIES + 1)
#define D_Tdelay_40ms ((40-1) / JIFFIES + 1)
4 years ago
#define D_Tdelay_50ms ((50-1) / JIFFIES + 1)
4 years ago
4 years ago
#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)
4 years ago
#define D_Tdelay_500ms ((500-1) / JIFFIES + 1)
4 years ago
#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);
#define D_print_heartbeat_nexttimes(); s_nos_tick.print_heartbeat = 1;//下一次再打印心跳
#define D_print_heartbeat_close(); s_nos_tick.print_heartbeat = 0;//停止打印心跳
#define D_print_heartbeat_ok() (1 == s_nos_tick.print_heartbeat)//允许打印心跳
#define D_print_heartbeat_disable() (0 == s_nos_tick.print_heartbeat)//允许打印心跳
#define D_print_heartbeat() if(D_print_heartbeat_disable()){\
D_print_heartbeat_nexttimes();\
}else
4 years ago
extern void L1_tick_init(void);
extern void L1_tick_tick (void);
#endif /* end __tick_H */
/*****************************************************************************
** End Of File
******************************************************************************/