| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 | /********************************* (C) РОТЕК *********************************** * @module  led * @file    led.c * @version 1.0.0 * @date    XX.XX.XXXX * $brief   Template ******************************************************************************* * @history     Version  Author         Comment * XX.XX.XXXX   1.0.0    Telenkov D.A.  First release. ******************************************************************************* */#include "led.h"#include "FreeRTOS.h"#include "task.h"uint16_t statusLedFreq = 1000; // Определяет частоту мигания STATUS LEDLED_STATE_t sLedInt = {GREEN, TOGGLE_OFF};LED_STATE_t ledIntTemporary = {GREEN, TOGGLE_OFF};/**  * @brief    * @retval   */void LED_Init(void){  LED_Off(LED_INIT_R);  LED_Off(LED_INIT_G);  LED_Off(LED_MAJOR_R);  LED_Off(LED_MINOR_G);  LED_Off(LED_MINOR_R);}void vTaskServiceLedBlink(void *arg){  for (;;)  {	/* Просто отражает состояние контроллера - "живой" */    LED_Toggle(LED_INIT_G);    LED_Toggle(LED_INIT_R);    vTaskDelay(statusLedFreq / 4);  }}void vTaskServiceLedBlinkErr(void *arg){  for (;;)  {	/* Просто отражает состояние контроллера - "живой" */    LED_Toggle(LED_INIT_R);    vTaskDelay(statusLedFreq);  }}/**  * @brief    */void LED_AddStateInt(COLOR_t color, TOGGLE_t toggle){    //sLedInt.toggle = toggle;    if ((sLedInt.color == GREEN) && (toggle == TOGGLE_ON))	sLedInt.toggle = toggle;    switch (color)  {	/* Зеленый не перебивает никакой цвет */    case GREEN :	  	break;		/* Красный перебивает все цвета и останавливет мигание*/	case RED :	  sLedInt.color = RED;	  sLedInt.toggle = TOGGLE_OFF;	break;		/* Желтый перебивает только зеленый и останавливает мигание*/	case YELLOW :	  if (sLedInt.color != RED)	  {			sLedInt.color = YELLOW;		sLedInt.toggle = TOGGLE_OFF;	  }	break;	    default :	break;  }  }/**  * @brief    */void LED_On(gpio_t pin){	gpio_set(pin, 1);}/**  * @brief    */void LED_Off(gpio_t pin){	gpio_set(pin, 0);}/**  * @brief  Изменить состояние LED   */void LED_Toggle(gpio_t pin){	gpio_invert_output(pin);}/**  * @brief    */void LED_SetStatusLedFreq(uint16_t freq){  statusLedFreq = freq;}/********************************* (C) РОТЕК **********************************/
 |