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
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 Structure������TSTS��
|
||
|
*==============================================================
|
||
|
|
||
|
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 Structure������TSTS��
|
||
|
*==============================================================
|
||
|
****************************************************************************/
|
||
|
|
||
|
|
||
|
|