system_task.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #ifndef SYSTEM_TASK_H_
  2. #define SYSTEM_TASK_H_
  3. #include "stm8s.h"
  4. typedef struct sys_task{
  5. uint8_t status;
  6. uint16_t cycle;
  7. void (*taskPointer)(void);
  8. uint32_t lastCounterHeld;
  9. uint8_t startUpOffset;
  10. }sys_task_t;
  11. typedef enum task_status{
  12. Uninitialized = 0U, // not ready for kick-start, default status
  13. Active, // already running
  14. Deactive // initialized but not running, task "ready"
  15. }task_status_t;
  16. typedef enum task_numbers{
  17. Task_00 = 0U,
  18. Task_01,
  19. Task_02,
  20. Task_03,
  21. Task_04,
  22. Task_05,
  23. Task_06,
  24. Task_07,
  25. Task_08,
  26. Task_09,
  27. Task_10,
  28. Task_11,
  29. Task_12,
  30. Task_13,
  31. Task_14,
  32. Task_15
  33. }task_number_t;
  34. #define TASK_STARTED ((uint8_t)(0x00))
  35. #define TASK_NOT_READY ((uint8_t)(0x01))
  36. #define TASK_ALREADY_RUNNING ((uint8_t)(0x02))
  37. #define TASK_ALREADY_STOPPED ((uint8_t)(0x03))
  38. #define TASK_INITIALIZED ((uint8_t)(0x04))
  39. uint8_t startTask(uint8_t, uint8_t);
  40. uint8_t stopTask(uint8_t);
  41. uint8_t configTask(uint8_t, void (*)(void), uint16_t);
  42. void eliminateTask(uint8_t);
  43. void taskHandler(void);
  44. extern void taskA(void);
  45. extern void taskB(void);
  46. #endif /* SYSTEM_TASK_H_ */