display.c 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. /**
  2. * @file Bikelight.c
  3. * @author Wang, Zhiyu(wangzy49@midea.com)
  4. * @brief light of ebike
  5. * @version 0.1
  6. * @date 2021-10-09
  7. *
  8. * @copyright Copyright (c) 2021
  9. *
  10. */
  11. /************************************************************************
  12. Beginning of File, do not put anything above here except notes
  13. Compiler Directives:
  14. *************************************************************************/
  15. #include "syspar.h"
  16. #include "typedefine.h"
  17. #include "mathtool.h"
  18. //#include "stm32f30x.h"
  19. #include "display.h"
  20. /******************************
  21. *
  22. * Parameter
  23. *
  24. ******************************/
  25. DISPLAY_OUT display_stDisplayOut = DISPLAY_OUT_DEFAULT;
  26. static DISPLAY_COEF display_stDisplayCoef = DISPLAY_COEF_DEFAULT;
  27. /***************************************************************
  28. Function: bikelight_voSetBikeLightOn;
  29. Description: set bike light on
  30. Call by: functions in main loop;
  31. Input Variables: N/A
  32. Output/Return Variables: N/A
  33. Subroutine Call: N/A;
  34. Reference: N/A
  35. ****************************************************************/
  36. static void display_voSetDisplayOn(void)
  37. {
  38. if (display_stDisplayOut.DisplayState != DISPLAY_Error)
  39. {
  40. // GPIOC->ODR |= (1<<DISPLAY_EN_PORT); //gpioC 14 = On
  41. display_stDisplayOut.DisplayState = DISPLAY_On;
  42. }
  43. }
  44. /***************************************************************
  45. Function: bikelight_voSetBikeLightOff;
  46. Description: set bike off
  47. Call by: functions in main loop;
  48. Input Variables: N/A
  49. Output/Return Variables: N/A
  50. Subroutine Call: N/A;
  51. Reference: N/A
  52. ****************************************************************/
  53. static void display_voSetDisplayOff(void)
  54. {
  55. if (display_stDisplayOut.DisplayState != DISPLAY_Error)
  56. {
  57. // GPIOC->ODR &= ~(1<<DISPLAY_EN_PORT); //gpioC 14 = Off
  58. display_stDisplayOut.DisplayState = DISPLAY_Off;
  59. }
  60. }
  61. /***************************************************************
  62. Function: bikelight_voBikeLightInit;
  63. Description: bike light control initialization
  64. Call by: functions in main loop;
  65. Input Variables: N/A
  66. Output/Return Variables: N/A
  67. Subroutine Call: N/A;
  68. Reference: N/A
  69. ****************************************************************/
  70. void display_voGetDisplayError(UWORD DisplayVolPu)
  71. {
  72. if ((display_stDisplayOut.blDisplayErrorFlg != TRUE) &&
  73. (DisplayVolPu > display_stDisplayCoef.uwDisplayErrorVoltagePuUp || DisplayVolPu < display_stDisplayCoef.uwDisplayErrorVoltagePuDown))
  74. {
  75. display_stDisplayOut.uwDisplayErrorCnt++;
  76. if (display_stDisplayOut.uwDisplayErrorCnt == display_stDisplayCoef.uwDisplayErrorCnt)
  77. {
  78. // GPIOC->ODR &= ~(1<<DISPLAY_EN_PORT);
  79. display_stDisplayOut.DisplayState = DISPLAY_Error;
  80. display_stDisplayOut.blDisplayErrorFlg = TRUE;
  81. display_stDisplayOut.uwDisplayErrorCnt = 0;
  82. }
  83. }
  84. else
  85. {
  86. display_stDisplayOut.uwDisplayErrorCnt = 0;
  87. }
  88. if ((display_stDisplayOut.blDisplayErrorFlg == TRUE) &&
  89. (DisplayVolPu < display_stDisplayCoef.uwDisplayErrorVoltagePuUp && DisplayVolPu > display_stDisplayCoef.uwDisplayErrorVoltagePuDown))
  90. {
  91. display_stDisplayOut.uwDisplayRecoverCnt++;
  92. if (display_stDisplayOut.uwDisplayRecoverCnt == display_stDisplayCoef.uwDisplayRecoverCnt)
  93. {
  94. // GPIOC->ODR &= ~(1<<DISPLAY_EN_PORT);
  95. display_stDisplayOut.DisplayState = DISPLAY_Off;
  96. display_stDisplayOut.blDisplayErrorFlg = FALSE;
  97. display_stDisplayOut.uwDisplayRecoverCnt = 0;
  98. }
  99. }
  100. else
  101. {
  102. display_stDisplayOut.uwDisplayRecoverCnt = 0;
  103. }
  104. }
  105. /***************************************************************
  106. Function: bikelight_voBikeLightInit;
  107. Description: bike light control initialization
  108. Call by: functions in main loop;
  109. Input Variables: N/A
  110. Output/Return Variables: N/A
  111. Subroutine Call: N/A;
  112. Reference: N/A
  113. ****************************************************************/
  114. void display_voDisplayInit(void)
  115. {
  116. display_stDisplayOut.uwDisplayErrorCnt = 0;
  117. display_stDisplayOut.uwDisplayRecoverCnt = 0;
  118. display_stDisplayOut.DisplayState = DISPLAY_Off;
  119. display_stDisplayOut.blDisplayErrorFlg = FALSE;
  120. display_voDisplayControl(1);
  121. display_stDisplayCoef.uwDisplayErrorCnt = Display_POWER_ERROR_DETECT / Display_POWER_ERROR_TIMEUNIT;
  122. display_stDisplayCoef.uwDisplayRecoverCnt = Display_POWER_ERROR_RECOVER / Display_POWER_ERROR_TIMEUNIT;
  123. display_stDisplayCoef.uwDisplayErrorVoltagePuDown = ((ULONG)Display_POWER_ERROR_VOLTAGE_DOWN << 14) / VBASE;
  124. display_stDisplayCoef.uwDisplayErrorVoltagePuUp = ((ULONG)Display_POWER_ERROR_VOLTAGE_UP << 14) / VBASE;
  125. }
  126. /***************************************************************
  127. Function: bikelight_voBikeLightInit;
  128. Description: bike light control initialization
  129. Call by: functions in main loop;
  130. Input Variables: N/A
  131. Output/Return Variables: N/A
  132. Subroutine Call: N/A;
  133. Reference: N/A
  134. ****************************************************************/
  135. void display_voDisplayCoef(void)
  136. {
  137. display_stDisplayCoef.uwDisplayErrorCnt = Display_POWER_ERROR_DETECT / Display_POWER_ERROR_TIMEUNIT;
  138. display_stDisplayCoef.uwDisplayRecoverCnt = Display_POWER_ERROR_RECOVER / Display_POWER_ERROR_TIMEUNIT;
  139. display_stDisplayCoef.uwDisplayErrorVoltagePuDown = ((ULONG)Display_POWER_ERROR_VOLTAGE_DOWN << 14) / VBASE;
  140. display_stDisplayCoef.uwDisplayErrorVoltagePuUp = ((ULONG)Display_POWER_ERROR_VOLTAGE_UP << 14) / VBASE;
  141. }
  142. /***************************************************************
  143. Function: bikelight_voBikeLightInit;
  144. Description: bike light control initialization
  145. Call by: functions in main loop;
  146. Input Variables: N/A
  147. Output/Return Variables: N/A
  148. Subroutine Call: N/A;
  149. Reference: N/A
  150. ****************************************************************/
  151. void display_voDisplayControl(UWORD switchAction)
  152. {
  153. if (switchAction == 1)
  154. {
  155. display_voSetDisplayOn();
  156. }
  157. if (switchAction == 0)
  158. {
  159. display_voSetDisplayOff();
  160. }
  161. }
  162. /***************************************************************
  163. Function: bikelight_voBikeLightInit;
  164. Description: bike light control initialization
  165. Call by: functions in main loop;
  166. Input Variables: N/A
  167. Output/Return Variables: N/A
  168. Subroutine Call: N/A;
  169. Reference: N/A
  170. ****************************************************************/
  171. void display_voCommunication(void)
  172. {}
  173. /*************************************************************************
  174. Local Functions (N/A)
  175. *************************************************************************/
  176. /*************************************************************************
  177. End of this File (EOF)!
  178. Do not put anything after this part!
  179. *************************************************************************/