systick.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. /******************************* (C) LiteMesh **********************************
  2. * @module systick
  3. * @file systick.h
  4. * @version 1.0.0
  5. * @date 29.05.2015
  6. * $brief Functions to work with System Timer.
  7. * Module is based on code teplofizik, 2013
  8. *******************************************************************************
  9. * @history Version Author Comment
  10. * 29.05.2015 1.0.0 Telenkov D.A. First release.
  11. *******************************************************************************
  12. */
  13. #ifndef SYSTICK_H
  14. #define SYSTICK_H
  15. #include <stdint.h>
  16. #define TIMER_HANDLERS 20 // Максимально количество обработчкиков
  17. typedef void (*TTimerHandler)();
  18. /**
  19. * @brief Запуск таймера с заданной частотой
  20. */
  21. void timer_Init(uint32_t Frequency);
  22. /**
  23. * @brief Добавить функцию в список вызова.
  24. * Handler будет вызываться с заданной частотой
  25. */
  26. void timer_AddFunction(uint16_t Frequency, TTimerHandler Handler);
  27. /**
  28. * @brief Изменить частоту таймера
  29. */
  30. void timer_ChangeFrequency(TTimerHandler Handler, uint16_t Frequency);
  31. /**
  32. * @brief Возобночить работу задачи
  33. */
  34. void timer_Resume(TTimerHandler Handler);
  35. /**
  36. * @brief Перезапуск задачи
  37. */
  38. void timer_Restart(TTimerHandler Handler);
  39. /**
  40. * @brief Перезапуск задачи. Задача будет вызвана сразу.
  41. */
  42. void timer_RestartAtOnce(TTimerHandler Handler);
  43. /**
  44. * @brief Остановить задачу
  45. */
  46. void timer_Stop(TTimerHandler Handler);
  47. /**
  48. * @brief Функция перебора и вызова актуальных задач.
  49. * Должна вызываться в главном цикле
  50. */
  51. void timer_Main(void);
  52. /**
  53. * @brief
  54. * @retval Частота тактирования ядра
  55. */
  56. uint32_t clock_GetSYS(void);
  57. /**
  58. * @brief Задержка в миллисекундах
  59. */
  60. void Delay_ms(__IO uint32_t nTime);
  61. /**
  62. * @brief Вспомогательная функция для реализации Delay_ms
  63. */
  64. void TimingDelay_Decrement(void);
  65. #endif // SYSTICK_H