HW_TIMER_ATY.c 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. /**
  2. * @file HW_TIMER_ATY.c
  3. *
  4. * @param Project DEVICE_GENERAL_ATY_LIB
  5. *
  6. * @author ATY
  7. *
  8. * @copyright
  9. * - Copyright 2017 - 2026 MZ-ATY
  10. * - This code follows:
  11. * - MZ-ATY Various Contents Joint Statement -
  12. * <a href="https://mengze.top/MZ-ATY_VCJS">
  13. * https://mengze.top/MZ-ATY_VCJS</a>
  14. * - CC 4.0 BY-NC-SA -
  15. * <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/">
  16. * https://creativecommons.org/licenses/by-nc-sa/4.0/</a>
  17. * - Your use will be deemed to have accepted the terms of this statement.
  18. *
  19. * @brief functions of timer for C platform
  20. *
  21. * @version
  22. * - 1_01_220602 > ATY
  23. * -# Preliminary version, first Release
  24. * - 1_02_240410 > ATY
  25. * -# add multy addr and channel
  26. * -# add lock
  27. * - 1_03_251114 > ATY
  28. * -# remove platform and delay functions
  29. ********************************************************************************
  30. */
  31. #ifndef __HW_TIMER_ATY_C
  32. #define __HW_TIMER_ATY_C
  33. #include "HW_TIMER_ATY.h"
  34. /******************************* For user *************************************/
  35. /******************************************************************************/
  36. /**
  37. * @brief define at user file and put at main while
  38. * @note long time process is not recommended
  39. */
  40. void UserTimerLoopProcess(struct HW_TIMER_ATY_Dev* dev){
  41. if(dev->timerInitFlag == 0){
  42. dev->timerInitFlag = 1;
  43. dev->timerInit();
  44. }
  45. dev->timerLoopProcess_User();
  46. }
  47. /**
  48. * @brief 1ms timer loop cycle
  49. * @note put at 1ms timer IT callback function
  50. */
  51. void UserTimerLoop_Cycle1ms(struct HW_TIMER_ATY_Dev* dev){
  52. dev->msN++;
  53. if(dev->ms10_f == 0)
  54. dev->ms10++;
  55. if(dev->ms100_f == 0)
  56. dev->ms100++;
  57. if(dev->s1_f == 0)
  58. dev->s1++;
  59. if(dev->s2_f == 0)
  60. dev->s2++;
  61. if(dev->s10_f == 0)
  62. dev->s10++;
  63. /* ATY: 1ms unit **********************************************************/
  64. dev->ms1_f = 1;
  65. /* ATY: 10ms unit *********************************************************/
  66. if(dev->ms10 >= 10){
  67. dev->ms10_f = 1;
  68. dev->ms10 = 0;
  69. }
  70. /* ATY: 100ms unit ********************************************************/
  71. if(dev->ms100 >= 100){
  72. dev->ms100_f = 1;
  73. dev->ms100 = 0;
  74. }
  75. /* ATY: 1s unit ***********************************************************/
  76. if(dev->s1 >= 1000){
  77. dev->s1_f = 1;
  78. dev->s1 = 0;
  79. }
  80. /* ATY: 2s unit ***********************************************************/
  81. if(dev->s2 >= 2000){
  82. dev->s2_f = 1;
  83. dev->s2 = 0;
  84. }
  85. /* ATY: 10s unit **********************************************************/
  86. if(dev->s10 >= 10000){
  87. dev->s10_f = 1;
  88. dev->s10 = 0;
  89. }
  90. }
  91. #endif /* __HW_TIMER_ATY_C */
  92. /************************************ etc *************************************/
  93. /* init */
  94. // Timer loop ------------------------------------------------------------------
  95. // #include "HW_TIMER_ATY.h"
  96. // void TimerLoopProcess_User_4(void);
  97. // void TimerInit_4(){
  98. // HAL_TIM_Base_Start_IT(&htim4);
  99. // }
  100. // struct HW_TIMER_ATY_Dev HW_TIMER_ATY_Dev_4 = {
  101. // .msN = 0,
  102. // .ms10 = 0,
  103. // .ms100 = 0,
  104. // .s1 = 0,
  105. //
  106. // .ms1_f = 0,
  107. // .ms10_f = 0,
  108. // .ms100_f = 0,
  109. // .s1_f = 0,
  110. //
  111. // .timerInitFlag = 0,
  112. // .timerInit = TimerInit_4,
  113. //
  114. // .timerLoopProcess_User = TimerLoopProcess_User_4,
  115. //
  116. // .lock = __ATY_UNLOCKED
  117. // };
  118. // void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef* htim){
  119. // if(htim == &htim4){
  120. // UserTimerLoop_Cycle1ms(&HW_TIMER_ATY_Dev_4);
  121. // }
  122. // }
  123. /* use */
  124. /* ATY Machine ****************************************************************/
  125. // void TimerLoopProcess_User_4(void){
  126. // if(HW_TIMER_ATY_Dev_4.ms1_f == 1){
  127. // HW_TIMER_ATY_Dev_4.ms1_f = 0;
  128. // }
  129. // if(HW_TIMER_ATY_Dev_4.ms100_f == 1){
  130. // HW_TIMER_ATY_Dev_4.ms100_f = 0;
  131. // SysLedBlink(&LED_ATY_t_1);
  132. // PWR_BTN_Status_withIT(&PWR_BTN_ATY_t_1);
  133. //
  134. // UpdateMbRegsFromFloat(mbG, &MODBUS_S_LOW_ATY_Dev_1);
  135. // }
  136. // if(HW_TIMER_ATY_Dev_4.s1_f == 1){
  137. // HW_TIMER_ATY_Dev_4.s1_f = 0;
  138. //
  139. // }
  140. // }
  141. /******************************************************************************/
  142. /******************************** End Of File *********************************/