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

📄 scheduler.txt

📁 基于at90usb1287的数据存储器例子
💻 TXT
字号:
Simple Scheduler

#CR Copyright (c) 2003 Atmel

OVERVIEW
--------
This module is a simple scheduler.

CONFIGURATION
-------------
<PRE>
In config.h:

1/ SCHEDULER_TYPE (required)
SCHEDULER_FREE: free running (max perfs, none constrainst)
SCHEDULER_TIMED: a semaphore is used to activate a new schedule (for instance all the tasks are executed each ms)
SCHEDULER_TASK: a semaphore is used between each task (for instance each task is executed each ms)
SCHEDULER_CUSTOM: custom, it is possible to define another scheduler type

2/ Scheduler_task_x_init (optional, except Scheduler_task_1_init)
x from 1 to 11, defines the init functions (init of task or general purpose init)

3/ Scheduler_task_x (optional, except Scheduler_task_1)
x from 1 to 11, defines the task functions

4/ Scheduler_time_init (optional)
defines the function that will be called to initialize time events: soft timers, tempo...

5/ SCHEDULER_ENABLE_IT (optional)
allow to enable interrupts after all initializations

6/ '#define scheduler main' (optional)
if the main is only a call to the scheduler

7/ TOKEN_MODE (optional)
To activate a token variable to avoid that tasks executes at same time. 
A unique token ID must be defined for each task that cannot been executed in parallel.
(Example : #define TASK_TOKEN_ID TASK_ID)

EXAMPLE
-------
|
|// File: config.h
|#define Scheduler_time_init     init_soft_timers
|
|#define Scheduler_task_1_init   twi_lib_init
|#define Scheduler_task_2_init   init_leds_task
|#define Scheduler_task_3_init   stdo_init
|#define Scheduler_task_4_init   init_main_task
|#define Scheduler_task_5_init   stdi_init
|
|#define Scheduler_task_1        leds_task
|#define Scheduler_task_3        main_task
|#define Scheduler_task_4        stdi_update_kbhit
|
|#define SCHEDULER_TYPE          SCHEDULER_FREE
|

// File: scheduler.c / scheduler.h (after precompiler)
void scheduler_init (void)
 {
  init_soft_timers();  
  twi_lib_init();  
  init_leds_task();  
  stdo_init();  
  init_main_task();  
  stdi_init();  
  ;
 }
 

void scheduler_tasks (void)
 {
 scheduler_empty_fct();  
 for(;;)
   {
   leds_task();
   ;
   main_task();
   ;
   stdi_update_kbhit();
   ;
   ;
   }
 }
 
 
void scheduler (void)
 {
 scheduler_init();
 scheduler_tasks();
 }
 

void scheduler_empty_fct (void)
 {
 }
 
</PRE>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -