214 lines
4.5 KiB
C
214 lines
4.5 KiB
C
/**
|
|
******************************************************************************
|
|
* @file led.c
|
|
* @author Lucien Senaneuch
|
|
* @version V1.0
|
|
* @date 16-mai-2016
|
|
* @brief Gestion des clignotements des LED
|
|
* Ce fichier fournis des fonctions afin de faciliter
|
|
* la gestions des changements de couleurs.
|
|
*
|
|
******************************************************************************
|
|
******************************************************************************
|
|
*/
|
|
|
|
#include <stm32f10x.h>
|
|
#include "system_dumby.h"
|
|
#include "led.h"
|
|
|
|
/** @addtogroup Projects
|
|
* @{
|
|
*/
|
|
|
|
/** @addtogroup Led_color
|
|
* @{
|
|
*/
|
|
|
|
|
|
|
|
/** @addtogroup Init Init GPIO
|
|
* @{
|
|
*/
|
|
|
|
TIM_TimeBaseInitTypeDef TIM_TimeBaseLED;
|
|
TIM_OCInitTypeDef TIM_OCConfigure;
|
|
char etatLED;
|
|
char LEDON;
|
|
|
|
#define LED_GREEN 0
|
|
#define LED_RED 1
|
|
#define LED_ORANGE 2
|
|
|
|
/*void ledGreenOn(void);
|
|
void ledRedOn(void);
|
|
void ledOff(void);
|
|
void ledOrangeOn(void);*/
|
|
|
|
/**
|
|
* @brief Configure le GPIO PB0 et PB1 afin de contrôler la led.
|
|
* @param Aucun
|
|
*/
|
|
void ledConfigure(void)
|
|
{
|
|
GPIO_InitTypeDef Init_Structure;
|
|
|
|
// Configure les PIN B0 et B1 en output / alternate fonction
|
|
Init_Structure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;
|
|
Init_Structure.GPIO_Speed = GPIO_Speed_50MHz;
|
|
Init_Structure.GPIO_Mode = GPIO_Mode_Out_PP;
|
|
GPIO_Init(GPIOB, &Init_Structure);
|
|
|
|
etatLED = 1;
|
|
LEDON =0;
|
|
}
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/** @addtogroup change Change color
|
|
* @{
|
|
*/
|
|
/**
|
|
* @brief Allume une LED de couleur orange.
|
|
* @param Aucun
|
|
*/
|
|
void ledOrangeOn(void)
|
|
{
|
|
GPIO_SetBits(GPIOB, GPIO_Pin_1);
|
|
GPIO_SetBits(GPIOB,GPIO_Pin_0);
|
|
}
|
|
|
|
/**
|
|
* @brief Allume une LED de couleur rouge.
|
|
* @param Aucun
|
|
*/
|
|
void ledRedOn(void)
|
|
{
|
|
GPIO_ResetBits(GPIOB, GPIO_Pin_1);
|
|
GPIO_SetBits(GPIOB,GPIO_Pin_0);
|
|
}
|
|
|
|
/**
|
|
* @brief Allume une LED de couleur verte.
|
|
* @param Aucun
|
|
*/
|
|
void ledGreenOn(void)
|
|
{
|
|
|
|
GPIO_SetBits(GPIOB, GPIO_Pin_1);
|
|
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
|
|
}
|
|
|
|
/**
|
|
* @brief Eteint les LED.
|
|
* @param Aucun
|
|
*/
|
|
void ledOff(void)
|
|
{
|
|
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
|
|
GPIO_ResetBits(GPIOB,GPIO_Pin_1);
|
|
}
|
|
|
|
/**
|
|
* @brief Allume une couleur de LED.
|
|
* @param Aucun
|
|
*/
|
|
void ledOn(char color)
|
|
{
|
|
switch (color)
|
|
{
|
|
case LED_GREEN:
|
|
GPIO_SetBits(GPIOB, GPIO_Pin_1);
|
|
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
|
|
break;
|
|
|
|
case LED_RED:
|
|
GPIO_ResetBits(GPIOB, GPIO_Pin_1);
|
|
GPIO_SetBits(GPIOB,GPIO_Pin_0);
|
|
break;
|
|
|
|
case LED_ORANGE:
|
|
GPIO_SetBits(GPIOB, GPIO_Pin_1);
|
|
GPIO_SetBits(GPIOB,GPIO_Pin_0);
|
|
break;
|
|
|
|
default:
|
|
ledOff();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @brief Gere l'etat du clignotement de la led en fonction de l'etat du système
|
|
* Appelée toutes les 10 ms
|
|
* @param state: état actuel du système
|
|
* @param batteryState: état de la batterie
|
|
*/
|
|
void ledManagement(States state, char batteryState) {
|
|
static char ledCounter=0;
|
|
char color;
|
|
|
|
if (batteryState>1) color=LED_GREEN;
|
|
else color = LED_RED;
|
|
|
|
switch (state)
|
|
{
|
|
case STATE_IDLE:
|
|
if ((ledCounter<15) || ((ledCounter>=100) && (ledCounter<115))) ledOn(color);
|
|
else ledOff();
|
|
break;
|
|
|
|
case STATE_RUN:
|
|
case STATE_LOW:
|
|
ledOn(color);
|
|
break;
|
|
|
|
case STATE_WATCHDOG_DISABLE:
|
|
if (ledCounter<100) ledOn(LED_RED);
|
|
else ledOff();
|
|
break;
|
|
|
|
case STATE_DISABLE:
|
|
default:
|
|
if (ledCounter%10 ==0) ledOn(LED_RED);
|
|
else ledOff();
|
|
}
|
|
|
|
ledCounter++;
|
|
if (ledCounter>200) ledCounter=0;
|
|
}
|
|
|
|
//void ledManagement(States state) {
|
|
// if (state == STATE_IDLE) {
|
|
// if (etatLED == 1) {
|
|
// LEDON = 1;
|
|
// } else if (etatLED == 2)
|
|
// LEDON = 0;
|
|
// }
|
|
//
|
|
// if (state == STATE_RUN || state == STATE_LOW)
|
|
// LEDON = 1;
|
|
//
|
|
// if (state == STATE_DISABLE) {
|
|
// if (etatLED % 2 == 0) ledRedOn();
|
|
// else ledOff();
|
|
// }
|
|
// else if (LEDON) {
|
|
// if (Dumber.stateBattery == 1 && Dumber.StateSystem != STATE_DISABLE)
|
|
// ledOrangeOn();
|
|
// else if (Dumber.stateBattery == 2 && Dumber.StateSystem != STATE_DISABLE)
|
|
// ledGreenOn();
|
|
// } else
|
|
// ledOff();
|
|
//}
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/**
|
|
* @}
|
|
*/
|