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.

289 lines
7.2 KiB

5 years ago
/********************************
2013.7.23 add dictionary and task step by cc
:task
:task step
־:sh ( struct handle)
һsh_next
,sh_nextִִsh_pre
***************************/
/*****************************************************
*==============================================================
* HISTORY
* Below this line, this part is controlled by TSTS. DO NOT MODIFY!!
αʱƬǶʽƽ̨(Task Step by Step Turn by Turn StructureTSTS
*==============================================================
20190217 and step01 Ұdelay_nű
****************************************************************************/
#ifndef _TASK_H_
#define _TASK_H_
#include "../clib/type.h"
#include "../msp/time.h"
#include "task.h"
#include "tick.h"
typedef struct
{
vU32 n;
/// volatile UN_TYPE en; //�ر�����,Ҳ��������Ϊ��ͣ,����ʹ��idelay�ĵط�ʱ���ں�̨������������ʱ���˺�����ͣ,����delay�൱����ͣ
volatile UN_TYPE sh; //��ǰ������
volatile UN_TYPE sh_next; //��һ��������,��������һ����һ������һ������,�п����м�������ʱ��������
/// volatile UN_TYPE sh_pre; //ǰһ��������,һ��Ϊ��������������ʹ��
}TS_task;
//extern TS_task ts_task_stcadc;
#define D_task_close 0
#define D_task_Tdelay 0x01
#define D_task_stop 0x04
#define D_task_Cdelay 0x09
#define D_task_init 0x10
#define D_task_quit 0xf0
#define TTS_for_add(i,start,len) for((i) = (start); (i) < (len); (i) ++){
#define TTS_for_add_end() }
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>�ڲ����� s->task
#define L2_task_delay_over() s->task.sh = s->task.sh_next
#define L2_task_go(next) s->task.sh = next
#define L2_task_en(onf) s->task.en = onf
#define L2_task_busy(s) (D_task_close != s.task.sh)
#define L2_task_free(s) (D_task_close == s.task.sh)
#define L2_task_go_father() s->task.sh = s->task.sh_pre
#define L2_task_go_son(fun,pre) s->task.sh = fun;s->task.sh_pre = pre
//>task ��ʱ>>>>>>>>>>>>>>TTSS
/// D_task_Tdelay == task timer delay ��Ҫ�����и���ʱ��Ԫ ��time0��ʱ����������
/// Delay_cycle������ ʱ���̵�,��һ��ѭ��ȡ������ѭ����ʱ��,��Tdelay��,Cdelay��ʱ����ʱ������
#define L2_task_switch_default_idelay(); \
case D_task_Tdelay:\
if (s_nos_tick.t_10ms >= s->task.n)\
{\
L2_task_delay_over();\
}\
break; \
case D_task_Cdelay:\
s->task.n--; \
if (s->task.n == 0) \
{ \
s->task.n = 0; \
L2_task_delay_over();\
} \
break;\
default : \
break;
#if 0
#define L2_task_switch_default_idelay2(); \
case D_task_Tdelay:\
if (s_nos_tick.t_10ms >= s->task.n)\
{\
L2_task_delay_over();\
}else\
{\
L2_time_beat_heart(D_TBH_ch0,3,'i');\
}\
break; \
case D_task_Cdelay:\
s->task.n--; \
if (s->task.n == 0) \
{ \
s->task.n = 0; \
L2_task_delay_over();\
} \
break;\
default : \
break;
//�ڵȴ��Ĺ��������ü���ʱ��,��ʱ����funxx
//�����ڵȴ��Ŀ���ʱ�����Զ�ʱ��ʾһЩ������Ϣ��
//ִ����������
#define L2_task_switch_fun_idelay(invent,ch) L2_task_switch_default_idelay()
#define L2_task_switch_fun_idelay0000(chhh,invent,funxx); \
case D_task_Tdelay:\
if (s_nos_tick.t_10ms >= s->task.n)\
{\
L2_task_delay_over();\
}else\
{\
L2_time_beat_heart_fun(chhh,invent,funxx);\
}\
break; \
case D_task_Cdelay:\
s->task.n--; \
if (s->task.n == 0) \
{ \
s->task.n = 0; \
L2_task_delay_over();\
} \
break;\
default : \
break;
//�ڵȴ��Ĺ��������ü���ʱ��,��ʱ��ʾ�ַ�ch
//�����ڵȴ��Ŀ���ʱ�����Զ�ʱ��ʾһЩ������Ϣch
// ͨ��ch����Ŀǰ���еĽ׶κ�������Ϣ
#define L2_task_switch_flag_idelay(invent,ch) L2_task_switch_default_idelay()
#define L2_task_switch_flag_idelay000(invent,ch); \
case D_task_Tdelay:\
if (s_nos_tick.t_10ms >= s->task.n)\
{\
L2_task_delay_over();\
}else\
{\
L2_time_beat_heart(D_TBH_ch0,invent,ch);\
}\
break; \
case D_task_Cdelay:\
s->task.n--; \
if (s->task.n == 0) \
{ \
s->task.n = 0; \
L2_task_delay_over();\
} \
break;\
default : \
break;
TTSS_Task_init, Highlight
TTSS_Task_step, Highlight
TTSS_Task_end, Highlight
L2_task_go, Highlight
L1_task_Tdelay, Highlight
L1_task_Cdelay, Highlight
L2_task_go, Highlight
#endif
//if(delay_n+s_time0.t_10ms > 655340)
//{s_time0.t_10ms = 0;}
//fix 201312 ��ֹs_time0.t_10ms ����
// �������
//>>L2_task_delayһ��Ҫ����L2_task_go֮��
#define L1_task_Tdelay(delay_n) s->task.sh_next = s->task.sh;\
s->task.sh = D_task_Tdelay;\
s->task.n = (delay_n) + s_nos_tick.t_10ms;
//>>L2_task_delayһ��Ҫ����L2_task_go֮��
#define L1_task_Cdelay(delay_n) s->task.sh_next = s->task.sh;\
s->task.sh = D_task_Cdelay;\
s->task.n = (delay_n)
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<�ڲ����� s->task
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> �ⲿ����
#define L2_task_s_go_son(s,fun,pre) (s).task.sh = fun;(s).task.sh_pre = pre;
#define L3_task_s_time_start(s,delay) (s).task.n = delay+s_nos_tick.t_1s;
#define L3_task_s_go(s,next) (s).task.sh = next;
#define L3_task_s_en(s,onf) (s).task.en = onf;
//L1_task_goout(s_task_music.task,D_task_close);
#define L3_task_s_busy(s) (D_task_close != (s).task.sh)
#define L3_task_s_free(s) (D_task_close == (s).task.sh)
#define L3_task_s_step(s) ((s).task.sh)
#define D_task_uc unsigned char
#define D_task_ui unsigned int
///>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#define TTSS_Task_init() switch(s->task.sh){\
case D_task_init
#define TTSS_Task_step(step) break;\
case (step)
#define TTSS_step01(step) break;case (step)
#define TTSS_step02(step) break;case (step)
#define TTSS_step03(step) break;case (step)
#define TTSS_step04(step) break;case (step)
#define TTSS_step05(step) break;case (step)
#define TTSS_step06(step) break;case (step)
#define TTSS_step07(step) break;case (step)
#define TTSS_step08(step) break;case (step)
#define TTSS_step09(step) break;case (step)
#define TTSS_step10(step) break;case (step)
#define TTSS_step11(step) break;case (step)
#define TTSS_step12(step) break;case (step)
#define TTSS_Task_end(); break;\
L2_task_switch_default_idelay();}
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
extern void L1_task_init(TS_task *s);
////>>>>>>>>>>>>>>>>>>>_s_task_test_>>>>>>>>>>>>>>>>>>>>>>>>
#ifdef D_debug_task_test
struct _s_task_test_
{
TS_task task;
};
extern struct _s_task_test_ s_task_test;
extern void L2_task_test_handle(struct _s_task_test_ *s);
extern void L2_task_test_init(void);
#else
#define L2_task_test_handle(x);
#define L2_task_test_init();
#endif//#ifdef D_debug_task_test
////<<<<<<<<<<<<<<<<<<<_s_task_test_<<<<<<<<<<<<<<<<<<<<<<<<
#endif//_TASK_H_
/*****************************************************
*==============================================================
* HISTORY
* Below this line, this part is controlled by TSTS. DO NOT MODIFY!!
αʱƬǶʽƽ̨(Task Step by Step Turn by Turn StructureTSTS
*==============================================================
****************************************************************************/