平车主控板(运维板)
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.

148 lines
4.2 KiB

5 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 "../bsp/type_hs.h"
#include "../msp/time.h"
struct _s_nos_tick_
{
vU32 tp_count;
vU8 flag_50ms;
vU32 sys_clock;
vU32 t_n; // noos系统定时器最小技术单元
vU32 t_50ms; // noos 系统定时器10m技术
vU32 t_100ms;
vU32 t_1s;
vU8 flag_1s;
vU8 flag_1s2;
vU32 n_stamp;
vU8 t1s_heatbeart; //noos 系统定时器整秒时刻标志,需要软件清除
vU8 ts_flag;
};
extern struct _s_nos_tick_ s_nos_tick;
//D_debug_sim_usinghhh
//10ms 不能使用,10ms是最小颗粒时长,存在误差,无法使用
#define D_Tdelay_ms D_TIMER0_50MS_COUNT//D_TIMER0_10MS_COUNT
#define D_Tdelay_100ms (D_Tdelay_ms+2)
#define D_Tdelay_200ms (D_Tdelay_ms+4)
#define D_Tdelay_300ms (D_Tdelay_ms+6)
#define D_Tdelay_400ms (D_Tdelay_ms+8)
#define D_Tdelay_1s (D_Tdelay_ms+20)
#define D_Tdelay_2s (D_Tdelay_1s*2)
#define D_Tdelay_3s (D_Tdelay_1s*3)
#define D_Tdelay_5s (D_Tdelay_1s*5)
#define D_Tdelay_10s (D_Tdelay_1s*10)
#define D_Tdelay_15s (D_Tdelay_1s*15)
#define D_Tdelay_1min (D_Tdelay_1s*60)
#define D_Tdelay_10min (D_Tdelay_1s*60 * 10)
#define D_Tdelay_1h (D_Tdelay_1min*60)
#define D_Tdelay_1day (D_Tdelay_1h*24)
#define D_TIMER0_1S_COUNT 20
//#define D_10mS 1//D_TIMER0_10MS_COUNT
//#define D_100mS (D_10mS*10)
//#define D_1S (D_10mS*100)
//>> 定时器: 初始化 间隔时间到
// L0_nos_tick10ms_start(s->times); 开始初始化s->times 以10ms为一个单位
// if( L0_nos_tick10ms_interval(s->times) < 20)// s->times 执行了20次后,也就是 定时20*10m到达
//必须配对
#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);
//>>>示例如下:
#if 0
{
case D_task_init://
Lc_print_buf(" \r\n YL_ init");
s->step = D_AT;
L0_esp_open();
L2_task_go(D_task_YL_ready);
s_uart0_rec.ok = 0;
L2_tick_time_stamp(s->t_stamp);
// L1_task_idelay(1*D_idelay_1s); //大约6s
break;
case D_task_YL_ready:
if(1 == s_uart0_rec.ok)
{
if(strstr(s_uart0_rec.array,"ready") != NULL)
{
Ldi_print("ready..\r\n");
s->step = D_AT;
L2_task_go(D_task_YL_ask);
}
s_uart0_rec.ok = 0;
}
if(L2_tick_time_stamp(s->t_stamp,1*D_idelay_1s))
{// 时间溢出
L0_esp_close();
Ldi_print("fail esp restart.\r\n");
L2_task_go(D_task_init);
L1_task_idelay(2*D_idelay_1s);
}
break;
}
#endif
#define D_main_status_debug 2
#define D_main_status_run 3
// 他和t_10ms 关联,如果t_10ms递增为1时间隔为(D_TIMER0_10MS_COUNT*定时器间隔)
/// #define D_TIMER0_10MS_COUNT 1 //定时器为 10ms一中断
void L1_tick_init(void);
extern void L1_tick_tick (void);
//L2_time_beat_heart(D_TBH_ch1,2,'t')
#define D_TBH_ch0 0
#define D_TBH_ch1 1
#define D_TBH_ch2 2
#define D_TBH_ch3 3
#define D_TBH_ch4 4
#define D_TBH_ch5 5
extern void L2_time_beat_heart(vU32 ch,U8 invent,U8 s);
//void L2_time_beat_heart_fun(INT32U ch,unsigned char invent,void *fun(void));
extern void L2_time_beat_heart_fun(vU32 ch,U8 invent,void (*fun)(void));
#endif /* end __tick_H */
/*****************************************************************************
** End Of File
******************************************************************************/