123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- /******************************* (C) LiteMesh **********************************
- * @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 "stm32f4xx.h"
- #include "led.h"
- LED_t LED_GreenInt;
- LED_t LED_RedInt;
- LED_t LEDS[2];
- /**
- * @brief
- * @retval
- */
- void LED_Init(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOA, ENABLE);
- LEDS[GREEN_STATUS].GPIOx = GPIOA;
- LEDS[GREEN_STATUS].GPIO_Pin = GPIO_Pin_3;
- LEDS[GREEN_STATUS].revers = 1;
- LEDS[RED_STATUS].GPIOx = GPIOA;
- LEDS[RED_STATUS].GPIO_Pin = GPIO_Pin_4;
- LEDS[RED_STATUS].revers = 1;
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
- GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
- GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
- GPIO_Init(GPIOA, &GPIO_InitStructure);
- LED_Off(GREEN_STATUS);
- LED_Off(RED_STATUS);
- }
- /**
- * @brief Мигает красным, индикация ошибки
- */
- void LED_Blinky_Red(void)
- {
- LED_Toggle(RED_STATUS);
- }
- /**
- * @brief Мигает желтым, индикация режима IAPviaSD
- */
- void LED_Blinky_Yellow(void)
- {
- LED_Toggle(GREEN_STATUS);
- LED_Toggle(RED_STATUS);
- }
- /**
- * @brief Мигает зеленым, индикация режима IAPviaETH
- */
- void LED_Blinky_Green(void)
- {
- LED_Toggle(GREEN_STATUS);
- }
- /**
- * @brief
- */
- void LED_On(LED_NAMES_t led)
- {
- API_LED_On(LEDS[led].GPIOx, LEDS[led].GPIO_Pin, LEDS[led].revers);
- }
- /**
- * @brief
- */
- void LED_Off(LED_NAMES_t led)
- {
- API_LED_Off(LEDS[led].GPIOx, LEDS[led].GPIO_Pin, LEDS[led].revers);
- }
- /**
- * @brief Изменить состояние LED
- */
- void LED_Toggle(LED_NAMES_t led)
- {
- LEDS[led].GPIOx->ODR ^= LEDS[led].GPIO_Pin;
- }
- /**
- * @brief Включить LED
- * @param port
- * @param pin
- * @param revers: 0 - для включения LED нужно установить уровень
- * 1 - для включения LED нужно сбросить уровень
- * @retval
- */
- void API_LED_On(GPIO_TypeDef* port, uint16_t pin, uint8_t revers)
- {
- if (revers == 0)
- port->BSRRL = pin;
- else
- port->BSRRH = pin;
- }
- /**
- * @brief Выключить LED
- * @param port
- * @param pin
- * @param revers: 0 - для выключения LED нужно снять уровень
- * 1 - для выключения LED нужно установить уровень
- * @retval
- */
- void API_LED_Off(GPIO_TypeDef* port, uint16_t pin, uint8_t revers)
- {
- if (revers == 0)
- port->BSRRH = pin;
- else
- port->BSRRL = pin;
- }
- /******************************* (C) LiteMesh *********************************/
|