led.c 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. /********************************* (C) РОТЕК ***********************************
  2. * @module led
  3. * @file led.c
  4. * @version 1.0.0
  5. * @date XX.XX.XXXX
  6. * $brief Template
  7. *******************************************************************************
  8. * @history Version Author Comment
  9. * XX.XX.XXXX 1.0.0 Telenkov D.A. First release.
  10. *******************************************************************************
  11. */
  12. #include "led.h"
  13. #include "FreeRTOS.h"
  14. #include "task.h"
  15. uint16_t statusLedFreq = 1000; // Определяет частоту мигания STATUS LED
  16. LED_STATE_t sLedInt = {GREEN, TOGGLE_OFF};
  17. LED_STATE_t ledIntTemporary = {GREEN, TOGGLE_OFF};
  18. /**
  19. * @brief
  20. * @retval
  21. */
  22. void LED_Init(void)
  23. {
  24. LED_Off(LED_INIT_R);
  25. LED_Off(LED_INIT_G);
  26. LED_Off(LED_MAJOR_R);
  27. LED_Off(LED_MINOR_G);
  28. LED_Off(LED_MINOR_R);
  29. }
  30. /**
  31. * @brief
  32. */
  33. void LED_AddStateInt(COLOR_t color, TOGGLE_t toggle)
  34. {
  35. //sLedInt.toggle = toggle;
  36. if ((sLedInt.color == GREEN) && (toggle == TOGGLE_ON))
  37. sLedInt.toggle = toggle;
  38. switch (color)
  39. {
  40. /* Зеленый не перебивает никакой цвет */
  41. case GREEN :
  42. break;
  43. /* Красный перебивает все цвета и останавливет мигание*/
  44. case RED :
  45. sLedInt.color = RED;
  46. sLedInt.toggle = TOGGLE_OFF;
  47. break;
  48. /* Желтый перебивает только зеленый и останавливает мигание*/
  49. case YELLOW :
  50. if (sLedInt.color != RED)
  51. {
  52. sLedInt.color = YELLOW;
  53. sLedInt.toggle = TOGGLE_OFF;
  54. }
  55. break;
  56. default :
  57. break;
  58. }
  59. }
  60. /**
  61. * @brief
  62. */
  63. void LED_On(gpio_t pin)
  64. {
  65. gpio_set(pin, 1);
  66. }
  67. /**
  68. * @brief
  69. */
  70. void LED_Off(gpio_t pin)
  71. {
  72. gpio_set(pin, 0);
  73. }
  74. /**
  75. * @brief Изменить состояние LED
  76. */
  77. void LED_Toggle(gpio_t pin)
  78. {
  79. gpio_invert_output(pin);
  80. }
  81. /**
  82. * @brief
  83. */
  84. void LED_SetStatusLedFreq(uint16_t freq)
  85. {
  86. statusLedFreq = freq;
  87. }
  88. /********************************* (C) РОТЕК **********************************/