rtos.h 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /******************************************************************************************
  2. * За основу взят планировщик задач с сайта ChipEnable.ru *
  3. * http://chipenable.ru/index.php/programming-avr/item/110-planirovschik.html *
  4. * *
  5. * Доработал Шибанов Владимир aka KontAr *
  6. * Дата: 26.03.2014 *
  7. * *
  8. * Изменения: *
  9. * - добавлен однократный вызов задачи *
  10. * - добавлено удаление задачи по имени *
  11. * - при повторном добавлении задачи обновляются ее переменные *
  12. * - добавлен указатель на "хвост" списка *
  13. * - функции РТОС скорректированы с учетом "хвоста" *
  14. ******************************************************************************************
  15. * shilov, 2015.04.07 *
  16. * совместил с модулем милисекундных задержек на таймере *
  17. ******************************************************************************************/
  18. #pragma once
  19. #ifndef RTOS_H
  20. #define RTOS_H
  21. #include "stm32g0xx.h"
  22. /* Количество задач */
  23. #define MAX_TASKS 20
  24. /**
  25. * Структура задачи
  26. */
  27. typedef struct task
  28. {
  29. void (*pFunc) (void); // указатель на функцию
  30. uint32_t delay; // задержка перед первым запуском задачи
  31. uint32_t period; // период запуска задачи
  32. uint8_t run; // флаг готовности задачи к запуску
  33. } task;
  34. /**
  35. * Прототипы фукнций
  36. */
  37. void RTOS_Init (void);
  38. void RTOS_SetTask (void (*taskFunc)(void), uint32_t taskDelay, uint32_t taskPeriod);
  39. void RTOS_DeleteTask (void (*taskFunc)(void));
  40. void RTOS_DispatchTask (void);
  41. void RTOS_Timer (void);
  42. void tdelay_ms(uint32_t msek);
  43. #endif