SY8835_For_Demo_Ourself/UsrInc/led/led.h

231 lines
7.8 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
******************************************************************************
*
* @file led.h
* @brief led dispaly module
* @ic sy8835
*
* @version 1.0
* @date 2024/11/01 09:59:40
* @author Alex Xu
*
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
* All Rights Reserved
*
* History:
* Revision Date Author Desc
* 1.0.0 2024/11/01 Alex build this file
******************************************************************************
*/
#ifndef __LED_H__
#define __LED_H__
/*_____ I N C L U D E S ____________________________________________________*/
#include "define.h"
#ifdef LED_DISPLAY
#ifdef _DEBUG_LED
#define _DEBUG_LED_1
#define _DEBUG_LED_2
#endif
/******************************************************************************\
Macro definitions
\******************************************************************************/
#define LED_PLUS_TIME 1
sbit pin_LED_1 = P1^0;
sbit pin_LED_2 = P1^1;
sbit pin_LED_3 = P1^2;
sbit pin_LED_4 = P1^3;
// LED端口定义
#define LEDR_ON() pin_LED_1 = 1 //LED_1_ON()
#define LEDR_OFF() pin_LED_1 = 0 //LED_1_OFF()
#define LEDR_TOG() pin_LED_1 = !pin_LED_1 //LED_1_RUN()
//LED闪烁最小时间周期单位ms
#define LEDG_ON() pin_LED_2 = 1 //LED_2_ON()
#define LEDG_OFF() pin_LED_2 = 0 //LED_2_OFF()
#define LEDG_TOG() pin_LED_2 = !pin_LED_2 //LED_2_RUN()
#define LEDY_ON() pin_LED_3 = 1 //LED_3_ON()
#define LEDY_OFF() pin_LED_3 = 0 //LED_3_OFF()
#define LEDY_TOG() pin_LED_3 = !pin_LED_3 //LED_3_RUN()
#define LEDB_ON() pin_LED_4 = 1 //LED_4_ON()
#define LEDB_OFF() pin_LED_4 = 0 //LED_4_OFF()
#define LEDB_TOG() pin_LED_4 = !pin_LED_4 //LED_4_RUN()
/******************************************************************************\
Typedef definitions
\******************************************************************************/
//LED名称重定义顺序和上方的宏定义保持一致
enum LED_ID
{
LED_R = 0x00,
LED_G,
LED_Y,
LED_B,
LED_ID_MAX
};
//LED工作状态
enum LED_STATE
{
LED_OFF = 0x00,
LED_ON,
LED_FLASH,
LED_KEEP_FLASHING,
LED_BREATHING_LIGHT,
};
#ifdef PWM_ENABLE
enum LIGHT_DIR
{
SHOW_NONE = 0x00,
SLOW_DARK, //缓灭
SLOW_LIGHT, //缓亮
SHOW_NORMAL, //呼吸灯正常亮。
};
#endif
//LED控制结构体
typedef struct{
uint8_t State[LED_ID_MAX];//LED 的工作状态
uint8_t Light_Dir[LED_ID_MAX]; //呼吸灯亮的类型,缓亮、缓灭、正常亮。
uint16_t Flash_Duty[LED_ID_MAX];//LED占空比即点亮时间
uint16_t Flash_Period[LED_ID_MAX];//LED周期
uint16_t Flash_Times[LED_ID_MAX];//闪烁次数
uint16_t Timer[LED_ID_MAX];//时间计数 1ms计数一次
}TS_LED_INFO;
extern volatile uint8_t Display_RSta; // 显示状态
extern volatile uint8_t Display_GSta; // 显示状态
extern volatile uint8_t Display_YSta; // 显示状态
extern volatile uint8_t Display_BSta; // 显示状态
// LED显示相关定义
// LED显示逻辑
// -- 红色LED用于充电指示原则上充电时闪烁充电完常亮未充电熄灭
// -- 绿色LED用于操作指示原则上耳机放入、取出、开盖、关盖时闪烁一次即可
typedef enum {
DISPLAY_NONE,
DISPLAY_ON,
DISPLAY_OFF,
DISPLAY_FLASH,
DISPLAY_KEEP_FLASH,
DISPLAY_MAX
} TE_DISPLAY_STA;
#define Display_AllOff() {LED_R_OFF();LED_G_OFF();LED_Y_OFF();LED_B_OFF();Display_RSta=DISPLAY_OFF;Display_GSta=DISPLAY_OFF;Display_YSta=DISPLAY_OFF;Display_BSta=DISPLAY_OFF;}
#define Display_AllOn() {LED_R_ON();LED_G_ON();LED_Y_ON();LED_B_ON();Display_RSta=DISPLAY_ON;Display_GSta=DISPLAY_ON;Display_YSta=DISPLAY_ON;Display_BSta=DISPLAY_ON;}
#define Display_Red_On() {LED_R_ON();Display_RSta=DISPLAY_ON;}
#define Display_Red_Off() {LED_R_OFF();Display_RSta=DISPLAY_OFF;}
#define Display_Red_Flash(Fre,n) {LED_R_FLASH(Fre,n);Display_RSta=DISPLAY_FLASH;}
#define Display_Red_KeepFlash(Fre) {LED_R_KEEP_FLASHING(Fre);Display_RSta=DISPLAY_KEEP_FLASH;}
#define Display_Green_On() {LED_G_ON();Display_GSta=DISPLAY_ON;}
#define Display_Green_Off() {LED_G_OFF();Display_GSta=DISPLAY_OFF;}
#define Display_Green_Flash(Fre,n) {LED_G_FLASH(Fre,n);Display_GSta=DISPLAY_FLASH;}
#define Display_Green_KeepFlash(Fre) {LED_G_KEEP_FLASHING(Fre);Display_GSta=DISPLAY_KEEP_FLASH;}
#define Display_Yellow_On() {LED_Y_ON();Display_YSta=DISPLAY_ON;}
#define Display_Yellow_Off() {LED_Y_OFF();Display_YSta=DISPLAY_OFF;}
#define Display_Yellow_Flash(Fre,n) {LED_Y_FLASH(Fre,n);Display_YSta=DISPLAY_FLASH;}
#define Display_Yellow_KeepFlash(Fre) {LED_Y_KEEP_FLASHING(Fre);Display_YSta=DISPLAY_KEEP_FLASH;}
#define Display_Blue_On() {LED_B_ON();Display_BSta=DISPLAY_ON;}
#define Display_Blue_Off() {LED_B_OFF();Display_BSta=DISPLAY_OFF;}
#define Display_Blue_Flash(Fre,n) {LED_B_FLASH(Fre,n);Display_BSta=DISPLAY_FLASH;}
#define Display_Blue_KeepFlash(Fre) {LED_B_KEEP_FLASHING(Fre);Display_BSta=DISPLAY_KEEP_FLASH;}
/******************************************************************************\
Global variables and functions
\******************************************************************************/
/*
* 函数名称 : LED_Init
* 功能描述 : LED初始化
* 参 数 : NONE
* 返回值 : NONE
*/
/******************************************************************************/
extern void LED_Init(void);
/******************************************************************************/
/*
* 函数名称 : LED_Clr
* 功能描述 : 熄灭全部LED
* 参 数 : NONE
* 返回值 : NONE
*/
/******************************************************************************/
extern void LED_Clr(void);
/******************************************************************************/
/*
* 函数名称 : LED_Service
* 功能描述 : LED驱动需放在10ms时间片中
* 参 数 : NONE
* 返回值 : NONE
*/
/******************************************************************************/
extern void LED_Drv(void);
/******************************************************************************/
/*
* 函数名称 : LED_Set
* 功能描述 : LED工作方式设置
* 参 数 : State工作方式 / Period:闪烁周期(单位ms) / Times:闪烁次数
* 返回值 : NONE
*/
/******************************************************************************/
extern void LED_Set(uint8_t LedId,uint8_t State,uint16_t Period,uint16_t Times);
/******************************************************************************/
#ifdef PWM_ENABLE
extern void HuXiLED_Set(uint8_t LedId,uint8_t State,uint8_t Dir);
#endif
// 外部操作接口
#define LED_R_ON() LED_Set(LED_R, LED_ON, 0,0)
#define LED_R_OFF() LED_Set(LED_R, LED_OFF, 0,0)
#define LED_R_FLASH(Fre,n) LED_Set(LED_R, LED_FLASH,Fre,n)
#define LED_R_KEEP_FLASHING(Fre) LED_Set(LED_R, LED_KEEP_FLASHING, Fre,0)
#ifdef PWM_ENABLE
#define LED_R_BREATHING_LIGHT(Dir) HuXiLED_Set(LED_R, LED_BREATHING_LIGHT, Dir)
#endif
#define LED_G_ON() LED_Set(LED_G, LED_ON, 0,0)
#define LED_G_OFF() LED_Set(LED_G, LED_OFF, 0,0)
#define LED_G_FLASH(Fre,n) LED_Set(LED_G, LED_FLASH, Fre,n)
#define LED_G_KEEP_FLASHING(Fre) LED_Set(LED_G, LED_KEEP_FLASHING, Fre,0)
#ifdef PWM_ENABLE
#define LED_G_BREATHING_LIGHT(Dir) HuXiLED_Set(LED_G, LED_BREATHING_LIGHT, Dir)
#endif
#define LED_Y_ON() LED_Set(LED_Y, LED_ON, 0,0)
#define LED_Y_OFF() LED_Set(LED_Y, LED_OFF, 0,0)
#define LED_Y_FLASH(Fre,n) LED_Set(LED_Y, LED_FLASH, Fre,n)
#define LED_Y_KEEP_FLASHING(Fre) LED_Set(LED_Y, LED_KEEP_FLASHING, Fre,0)
#ifdef PWM_ENABLE
#define LED_Y_BREATHING_LIGHT(Dir) HuXiLED_Set(LED_Y, LED_BREATHING_LIGHT, Dir)
#endif
#define LED_B_ON() LED_Set(LED_B, LED_ON, 0,0)
#define LED_B_OFF() LED_Set(LED_B, LED_OFF, 0,0)
#define LED_B_FLASH(Fre,n) LED_Set(LED_B, LED_FLASH, Fre,n)
#define LED_B_KEEP_FLASHING(Fre) LED_Set(LED_B, LED_KEEP_FLASHING, Fre,0)
#ifdef PWM_ENABLE
#define LED_B_BREATHING_LIGHT(Dir) HuXiLED_Set(LED_B, LED_BREATHING_LIGHT, Dir)
#endif
//------------------------------------------------------------------------------
#endif
#endif