📄 scheduler.h
字号:
/*H**************************************************************************
* NAME: scheduler.h
*----------------------------------------------------------------------------
* Copyright (c) 2002 Atmel.
*----------------------------------------------------------------------------
* RELEASE: snd1c-demo-df-sd-3_0_0
* REVISION: 1.8
*----------------------------------------------------------------------------
* PURPOSE:
* This file contains the scheduler definition and the task function to be
* executed by the scheduler
*
* NOTE:
* SCHEDULER_TICK & FPER are defined in config.h
*
*****************************************************************************/
#ifndef _SCHEDULER_H_
#define _SCHEDULER_H_
/*_____ I N C L U D E S ____________________________________________________*/
#include <intrins.h>
/*_____ M A C R O S ________________________________________________________*/
/*----- Scheduler Types -----*/
#define SCHEDULER_CUSTOM 0
#define SCHEDULER_TIMED 1
#define SCHEDULER_TASK 2
#define SCHEDULER_FREE 3
/*----- Scheduler Timer -----*/
#define SCH_TIMER0 0
#define SCH_TIMER1 1
#define SCH_TIMER2 2
/*----- Scheduler Configuration -----*/
#define SCH_TIMER SCH_TIMER0 /* SCH_TIMER0, SCH_TIMER1, SCH_TIMER2 */
/*----- Scheduler Timer Configuration -----*/
#define TIM_ADJUST (Byte)6 /* to be modified for timing adjustment */
#define TIM_LOW LOW((65536 - (SCHEDULER_TICK * (FOSC / 6))) + TIM_ADJUST)
#define TIM_HIGH HIGH(65536 - (SCHEDULER_TICK * (FOSC / 6)))
#ifdef Scheduler_time_init
extern void Scheduler_time_init (void);
#endif
#ifdef Scheduler_task_1_init
extern void Scheduler_task_1_init (void);
#else
#error Scheduler_task_1_init must be defined in congif.h file
#endif
#ifdef Scheduler_task_2_init
extern void Scheduler_task_2_init (void);
#endif
#ifdef Scheduler_task_3_init
extern void Scheduler_task_3_init (void);
#endif
#ifdef Scheduler_task_4_init
extern void Scheduler_task_4_init (void);
#endif
#ifdef Scheduler_task_5_init
extern void Scheduler_task_5_init (void);
#endif
#ifdef Scheduler_task_6_init
extern void Scheduler_task_6_init (void);
#endif
#ifdef Scheduler_task_7_init
extern void Scheduler_task_7_init (void);
#endif
#ifdef Scheduler_task_8_init
extern void Scheduler_task_8_init (void);
#endif
#ifdef Scheduler_task_9_init
extern void Scheduler_task_9_init (void);
#endif
#ifdef Scheduler_task_10_init
extern void Scheduler_task_10_init (void);
#endif
#ifdef Scheduler_task_1
extern void Scheduler_task_1 (void);
#else
#error Scheduler_task_1 must be defined in congif.h file
#endif
#ifdef Scheduler_task_2
extern void Scheduler_task_2 (void);
#endif
#ifdef Scheduler_task_3
extern void Scheduler_task_3 (void);
#endif
#ifdef Scheduler_task_4
extern void Scheduler_task_4 (void);
#endif
#ifdef Scheduler_task_5
extern void Scheduler_task_5 (void);
#endif
#ifdef Scheduler_task_6
extern void Scheduler_task_6 (void);
#endif
#ifdef Scheduler_task_7
extern void Scheduler_task_7 (void);
#endif
#ifdef Scheduler_task_8
extern void Scheduler_task_8 (void);
#endif
#ifdef Scheduler_task_9
extern void Scheduler_task_9 (void);
#endif
#ifdef Scheduler_task_10
extern void Scheduler_task_10 (void);
#endif
/*_____ D E F I N I T I O N ________________________________________________*/
#ifdef scheduler_btick_0
extern Byte scheduler_btick_0;
#endif
#ifdef scheduler_btick_1
extern Byte scheduler_btick_1;
#endif
#ifdef scheduler_btick_2
extern Byte scheduler_btick_2;
#endif
#ifdef scheduler_btick_3
extern Byte scheduler_btick_3;
#endif
#ifdef scheduler_btick_4
extern Byte scheduler_btick_4;
#endif
#ifdef scheduler_wtick_0
extern Byte scheduler_wtick_0;
#endif
#ifdef scheduler_wtick_1
extern Uint16 scheduler_wtick_1;
#endif
#ifdef scheduler_wtick_2
extern Uint16 scheduler_wtick_2;
#endif
#ifdef scheduler_wtick_3
extern Uint16 scheduler_wtick_3;
#endif
#ifdef scheduler_wtick_4
extern Uint16 scheduler_wtick_4;
#endif
#if SCHEDULER_TYPE != SCHEDULER_FREE
extern bit scheduler_tick_flag;
#endif
/*_____ D E C L A R A T I O N ______________________________________________*/
void scheduler_init (void);
void scheduler_tasks (void);
#ifndef SCHEDULER_TYPE
#error You must define SCHEDULER_TYPE in config.h file
#elif SCHEDULER_TYPE == SCHEDULER_FREE
#define Scheduler_new_schedule()
#define Scheduler_call_next_task()
#define Scheduler_set_tick_flag()
#define Scheduler_reset_tick_flag()
#elif SCHEDULER_TYPE == SCHEDULER_TIMED
#define Scheduler_new_schedule() while(!_testbit_(scheduler_tick_flag)) //while (!scheduler_tick_flag); scheduler_tick_flag = FALSE
#define Scheduler_call_next_task()
#define Scheduler_set_tick_flag() (scheduler_tick_flag = TRUE)
#define Scheduler_reset_tick_flag() (scheduler_tick_flag = FALSE)
#elif SCHEDULER_TYPE == SCHEDULER_TASK
#define Sch_new_schedule()
#define Sch_call_next_task() while(!_testbit_(scheduler_tick_flag)) //while (!scheduler_tick_flag); scheduler_tick_flag = FALSE
#define Scheduler_set_tick_flag() (scheduler_tick_flag = TRUE)
#define Scheduler_reset_tick_flag() (scheduler_tick_flag = FALSE)
#elif SCHEDULER_TYPE == SCHEDULER_CUSTOM
#error Not implemented, ask N. Jourdan...
#define Scheduler_set_tick_flag() (scheduler_tick_flag = TRUE)
#define Scheduler_reset_tick_flag() (scheduler_tick_flag = FALSE)
#endif
#define Scheduler() scheduler_init(); scheduler_tasks()
#endif /* _SCHEDULER_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -