systick.h 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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. uint16_t timer_GetCountdown(TTimerHandler Handler);
  51. /**
  52. * @brief Функция перебора и вызова актуальных задач.
  53. * Должна вызываться в главном цикле
  54. */
  55. void timer_Main(void);
  56. /**
  57. * @brief
  58. * @retval Частота тактирования ядра
  59. */
  60. uint32_t clock_GetSYS(void);
  61. /**
  62. * @brief Задержка в миллисекундах
  63. */
  64. void Delay_ms(__IO uint32_t nTime);
  65. /**
  66. * @brief Вспомогательная функция для реализации Delay_ms
  67. */
  68. void TimingDelay_Decrement(void);
  69. #endif // SYSTICK_H