/** * @file Bikelight.c * @author Wang, Zhiyu(wangzy49@midea.com) * @brief light of ebike * @version 0.1 * @date 2021-10-09 * * @copyright Copyright (c) 2021 * */ /************************************************************************ Beginning of File, do not put anything above here except notes Compiler Directives: *************************************************************************/ #include "syspar.h" #include "typedefine.h" #include "mathtool.h" //#include "at32f421.h"//#include "stm32f10x.h" #include "display.h" /****************************** * * Parameter * ******************************/ DISPLAY_OUT display_stDisplayOut = DISPLAY_OUT_DEFAULT; static DISPLAY_COEF display_stDisplayCoef = DISPLAY_COEF_DEFAULT; /*************************************************************** Function: bikelight_voSetBikeLightOn; Description: set bike light on Call by: functions in main loop; Input Variables: N/A Output/Return Variables: N/A Subroutine Call: N/A; Reference: N/A ****************************************************************/ static void display_voSetDisplayOn(void) { if (display_stDisplayOut.DisplayState != DISPLAY_Error) { display_stDisplayOut.DisplayState = DISPLAY_On; } } /*************************************************************** Function: bikelight_voSetBikeLightOff; Description: set bike off Call by: functions in main loop; Input Variables: N/A Output/Return Variables: N/A Subroutine Call: N/A; Reference: N/A ****************************************************************/ static void display_voSetDisplayOff(void) { if (display_stDisplayOut.DisplayState != DISPLAY_Error) { display_stDisplayOut.DisplayState = DISPLAY_Off; } } /*************************************************************** Function: display_voGetDisplayError; Description: bike light control initialization Call by: functions in main loop; Input Variables: N/A Output/Return Variables: N/A Subroutine Call: N/A; Reference: N/A ****************************************************************/ void display_voGetDisplayError(UWORD DisplayVolPu) { if ((display_stDisplayOut.blDisplayErrorFlg != TRUE) && (DisplayVolPu > display_stDisplayCoef.uwDisplayErrorVoltagePuUp || DisplayVolPu < display_stDisplayCoef.uwDisplayErrorVoltagePuDown)) { display_stDisplayOut.uwDisplayErrorCnt++; if (display_stDisplayOut.uwDisplayErrorCnt == display_stDisplayCoef.uwDisplayErrorCnt) { display_stDisplayOut.DisplayState = DISPLAY_Error; display_stDisplayOut.blDisplayErrorFlg = TRUE; display_stDisplayOut.uwDisplayErrorCnt = 0; } } else { display_stDisplayOut.uwDisplayErrorCnt = 0; } if ((display_stDisplayOut.blDisplayErrorFlg == TRUE) && (DisplayVolPu < display_stDisplayCoef.uwDisplayErrorVoltagePuUp && DisplayVolPu > display_stDisplayCoef.uwDisplayErrorVoltagePuDown)) { display_stDisplayOut.uwDisplayRecoverCnt++; if (display_stDisplayOut.uwDisplayRecoverCnt == display_stDisplayCoef.uwDisplayRecoverCnt) { display_stDisplayOut.DisplayState = DISPLAY_Off; display_stDisplayOut.blDisplayErrorFlg = FALSE; display_stDisplayOut.uwDisplayRecoverCnt = 0; } } else { display_stDisplayOut.uwDisplayRecoverCnt = 0; } } /*************************************************************** Function: display_voDisplayInit; Description: bike light control initialization Call by: functions in main loop; Input Variables: N/A Output/Return Variables: N/A Subroutine Call: N/A; Reference: N/A ****************************************************************/ void display_voDisplayInit(void) { display_stDisplayOut.uwDisplayErrorCnt = 0; display_stDisplayOut.uwDisplayRecoverCnt = 0; display_stDisplayOut.DisplayState = DISPLAY_Off; display_stDisplayOut.blDisplayErrorFlg = FALSE; display_voDisplayControl(1); display_stDisplayCoef.uwDisplayErrorCnt = Display_POWER_ERROR_DETECT / Display_POWER_ERROR_TIMEUNIT; display_stDisplayCoef.uwDisplayRecoverCnt = Display_POWER_ERROR_RECOVER / Display_POWER_ERROR_TIMEUNIT; display_stDisplayCoef.uwDisplayErrorVoltagePuDown = ((ULONG)Display_POWER_ERROR_VOLTAGE_DOWN << 14) / VBASE; display_stDisplayCoef.uwDisplayErrorVoltagePuUp = ((ULONG)Display_POWER_ERROR_VOLTAGE_UP << 14) / VBASE; } /*************************************************************** Function: display_voDisplayCoef; Description: bike light control initialization Call by: functions in main loop; Input Variables: N/A Output/Return Variables: N/A Subroutine Call: N/A; Reference: N/A ****************************************************************/ void display_voDisplayCoef(void) { display_stDisplayCoef.uwDisplayErrorCnt = Display_POWER_ERROR_DETECT / Display_POWER_ERROR_TIMEUNIT; display_stDisplayCoef.uwDisplayRecoverCnt = Display_POWER_ERROR_RECOVER / Display_POWER_ERROR_TIMEUNIT; display_stDisplayCoef.uwDisplayErrorVoltagePuDown = ((ULONG)Display_POWER_ERROR_VOLTAGE_DOWN << 14) / VBASE; display_stDisplayCoef.uwDisplayErrorVoltagePuUp = ((ULONG)Display_POWER_ERROR_VOLTAGE_UP << 14) / VBASE; } /*************************************************************** Function: display_voDisplayControl; Description: bike light control initialization Call by: functions in main loop; Input Variables: N/A Output/Return Variables: N/A Subroutine Call: N/A; Reference: N/A ****************************************************************/ void display_voDisplayControl(UWORD switchAction) { if (switchAction == 1) { display_voSetDisplayOn(); } if (switchAction == 0) { display_voSetDisplayOff(); } } /*************************************************************** Function: display_voCommunication; Description: bike light control initialization Call by: functions in main loop; Input Variables: N/A Output/Return Variables: N/A Subroutine Call: N/A; Reference: N/A ****************************************************************/ void display_voCommunication(void) {} /************************************************************************* Local Functions (N/A) *************************************************************************/ /************************************************************************* End of this File (EOF)! Do not put anything after this part! *************************************************************************/