⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scheduler.h

📁 MP3设计源代码 使用atmel的单片机
💻 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 + -