scheduler.h 962 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #ifndef __MY_TASK_H
  2. #define __MY_TASK_H
  3. #ifdef __cplusplus
  4. extern "C"
  5. {
  6. #endif
  7. #include "stm32f30x.h"
  8. /*任务id 数字越小优先级越高 TASK_NUM表示任务数量,务必放到末尾*/
  9. enum
  10. {
  11. led_id = 0,
  12. ymod_id,
  13. TASK_NUM
  14. };
  15. typedef void (*Task_Handler_t)(void);
  16. /*任务块*/
  17. typedef struct
  18. {
  19. uint32_t RunTime; // 已运行时间
  20. uint32_t On_Time; // 任务执行时间间隔
  21. uint8_t TaskState; // 任务状态 1:可执行 0:空闲
  22. Task_Handler_t Task_Handler; // 任务执行函数
  23. } Task_Block_t, *p_Task_Block_t;
  24. /*任务控制块*/
  25. typedef struct
  26. {
  27. void (*Update_State)(p_Task_Block_t Task_Block); // 更新任务状态函数
  28. p_Task_Block_t Task; // 任务块指针
  29. } Task_Ctrl_t, *p_Task_Ctrl_t;
  30. void TaskAdd(uint8_t task_id, Task_Handler_t task, uint32_t on_time);
  31. void TaskInit(void);
  32. void TaskStart();
  33. extern Task_Ctrl_t Task_Ctrl;
  34. void ISR_CallBlack(p_Task_Ctrl_t Task_Ctrl);
  35. #ifdef __cplusplus
  36. }
  37. #endif
  38. #endif