/******************************************************************************
版权所有: 深圳市**科技有限公司
文件名: api_led_watchdog.c
作者: wangdy
创建日期: 2020/07/8
描述: led处理
其它:
修改历史: //修改历史记录列表,每条修改记录应包含修改日期、修改者及修改内容简述
序号 修改时间 修改人 修改内容
???? ????/??/?? ?????? 参考样式
******************************************************************************/
/************************************头文件************************************/
#include "api_led_watchdog.h"
#include <string.h>
#include "bsp_led_control.h"
#include "api_power_control.h"
#include "var_global.h"
#include "bsp_charge_control.h"
#include "bsp_power_control.h"
/*************************************变量*************************************/
_LED_STATE Led_State = LED_IDLE; //指示灯的状态
/*************************************函数*************************************/
/*******************************************************************************
* 名称: API_Led_Control_Init
* 描述: 指示灯控制 初始化
* 输入参数: 无
* 输出参数: 无
* 其它: 无
*******************************************************************************/
void API_Led_Control_Init(void)
{
LED_Control_Init(); //指示灯IO初始化
GlobalVar.API_Led_Control_Init_Finish = true;
}
/*******************************************************************************
* 名称: IRQ_Led_Process
* 描述: LED灯显示状态
* 输入参数: 无
* 输出参数: 无
* 其它: 无
*******************************************************************************/
void IRQ_Led_Process(void)
{
static uint16_t Led_Count = 0; //当前计数
if(LED_INDFU == Led_State)
{
if(ChargingState_Get()== false){
Matchine_3V3_Power_Off();
return ;
}
// MyPrintf("55555555555\r\n");
//超过最大值 则数据清0
if(Led_Count >= 2000){
Led_Count = 0;
}
Led_Count++;
//亮1s红灯 亮1s蓝灯
if(Led_Count <= 1000){
LED_Red_Status_On();
LED_Blue_Bt_Off();
}
else if(Led_Count > 300){
LED_Red_Status_Off();
// if(!Charge_Control_Flag.ChargeFinish_Flag)
LED_Blue_Bt_On();
}
}
else if(LED_IDLE == Led_State)
{
//判断是否充电异常 ,电池温度过高或者过低 闪红灯
if((Battery_Temp_State == BATTERY_TEMP_OVER_HIGH) || (Battery_Temp_State == BATTERY_TEMP_OVER_LOW)){
// MyPrintf("44444444444444\r\n");
//超过最大值 则数据清0
if(Led_Count >= 1000)
{
Led_Count = 0;
}
Led_Count++;
if(Led_Count <= 500){
LED_Red_Status_On();
LED_Blue_Bt_Off();
}else if(Led_Count >= 500){
LED_Red_Status_Off();
LED_Blue_Bt_Off();
}
}
//充电中 蓝灯 0.5S
else if((Charge_Control_Flag.Charging_Flag) && (!Charge_Control_Flag.ChargeFinish_Flag))
{
// MyPrintf("Charging_Flag=%d\r\n",Charge_Control_Flag.Charging_Flag);
// MyPrintf("ChargeFinish_Flag=%d\r\n",Charge_Control_Flag.ChargeFinish_Flag);
//超过最大值 则数据清0
if(Led_Count >= 1000){
Led_Count = 0;
}
Led_Count++;
// MyPrintf("Led_Count=%d\r\n",Led_Count);
//持续亮1s 关1s
if(Led_Count <= 500){
LED_Red_Status_Off();
LED_Blue_Bt_On();
}
else if(Led_Count > 500){
LED_Red_Status_Off();
LED_Blue_Bt_Off();
}
}
//充电完成 全关
else if((!Charge_Control_Flag.Charging_Flag) && (Charge_Control_Flag.ChargeFinish_Flag))
{
LED_Red_Status_Off();
LED_Blue_Bt_Off();
// MyPrintf("6566666666_77--\r\n");
Led_Count = 0;
}
else
{
LED_Red_Status_Off();
LED_Blue_Bt_Off();
// MyPrintf("777777777777777\r\n");
Led_Count = 0;
}
}
}
以下为api_led_watchdog.h
/******************************************************************************
版权所有: 深圳**科技有限公司
文件名: api_led_watchdog.h
作者: wangdy
创建日期: 2020/7/9
描述: 灯及看门狗处理
其它:
修改历史: //修改历史记录列表,每条修改记录应包含修改日期、修改者及修改内容简述
序号 修改时间 修改人 修改内容
???? ????/??/?? ?????? 参考样式
******************************************************************************/
/*********************************防止多次编译*********************************/
#ifndef _API_LED_WATCHDOG_H
#define _API_LED_WATCHDOG_H
/************************************头文件************************************/
#include <stdint.h>
#include <stdbool.h>
/************************************宏定义************************************/
//当前指示灯的显示状态
typedef enum
{
LED_IDLE = 1, //空闲状态
LED_INDFU, //在usb模式下
}_LED_STATE;
/************************************结构体************************************/
/**********************************可导出变量**********************************/
extern _LED_STATE Led_State; //指示灯的状态
/***********************************函数实现***********************************/
void API_Led_Control_Init(void);
void IRQ_Led_Process(void); //LED定时器
#endif