| 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 *********************************/
 |