/** * @file HW_TIMER_ATY.c * * @param Project DEVICE_GENERAL_ATY_LIB * * @author ATY * * @copyright * - Copyright 2017 - 2026 MZ-ATY * - This code follows: * - MZ-ATY Various Contents Joint Statement - * * https://mengze.top/MZ-ATY_VCJS * - CC 4.0 BY-NC-SA - * * https://creativecommons.org/licenses/by-nc-sa/4.0/ * - Your use will be deemed to have accepted the terms of this statement. * * @brief functions of timer for C platform * * @version * - 1_01_220602 > ATY * -# Preliminary version, first Release * - 1_02_240410 > ATY * -# add multy addr and channel * -# add lock * - 1_03_251114 > ATY * -# remove platform and delay functions ******************************************************************************** */ #ifndef __HW_TIMER_ATY_C #define __HW_TIMER_ATY_C #include "HW_TIMER_ATY.h" /******************************* For user *************************************/ /******************************************************************************/ /** * @brief define at user file and put at main while * @note long time process is not recommended */ void UserTimerLoopProcess(struct HW_TIMER_ATY_Dev* dev){ if(dev->timerInitFlag == 0){ dev->timerInitFlag = 1; dev->timerInit(); } dev->timerLoopProcess_User(); } /** * @brief 1ms timer loop cycle * @note put at 1ms timer IT callback function */ void UserTimerLoop_Cycle1ms(struct HW_TIMER_ATY_Dev* dev){ dev->msN++; if(dev->ms10_f == 0) dev->ms10++; if(dev->ms100_f == 0) dev->ms100++; if(dev->s1_f == 0) dev->s1++; if(dev->s2_f == 0) dev->s2++; if(dev->s10_f == 0) dev->s10++; /* ATY: 1ms unit **********************************************************/ dev->ms1_f = 1; /* ATY: 10ms unit *********************************************************/ if(dev->ms10 >= 10){ dev->ms10_f = 1; dev->ms10 = 0; } /* ATY: 100ms unit ********************************************************/ if(dev->ms100 >= 100){ dev->ms100_f = 1; dev->ms100 = 0; } /* ATY: 1s unit ***********************************************************/ if(dev->s1 >= 1000){ dev->s1_f = 1; dev->s1 = 0; } /* ATY: 2s unit ***********************************************************/ if(dev->s2 >= 2000){ dev->s2_f = 1; dev->s2 = 0; } /* ATY: 10s unit **********************************************************/ if(dev->s10 >= 10000){ dev->s10_f = 1; dev->s10 = 0; } } #endif /* __HW_TIMER_ATY_C */ /************************************ etc *************************************/ /* init */ // Timer loop ------------------------------------------------------------------ // #include "HW_TIMER_ATY.h" // void TimerLoopProcess_User_4(void); // void TimerInit_4(){ // HAL_TIM_Base_Start_IT(&htim4); // } // struct HW_TIMER_ATY_Dev HW_TIMER_ATY_Dev_4 = { // .msN = 0, // .ms10 = 0, // .ms100 = 0, // .s1 = 0, // // .ms1_f = 0, // .ms10_f = 0, // .ms100_f = 0, // .s1_f = 0, // // .timerInitFlag = 0, // .timerInit = TimerInit_4, // // .timerLoopProcess_User = TimerLoopProcess_User_4, // // .lock = __ATY_UNLOCKED // }; // void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef* htim){ // if(htim == &htim4){ // UserTimerLoop_Cycle1ms(&HW_TIMER_ATY_Dev_4); // } // } /* use */ /* ATY Machine ****************************************************************/ // void TimerLoopProcess_User_4(void){ // if(HW_TIMER_ATY_Dev_4.ms1_f == 1){ // HW_TIMER_ATY_Dev_4.ms1_f = 0; // } // if(HW_TIMER_ATY_Dev_4.ms100_f == 1){ // HW_TIMER_ATY_Dev_4.ms100_f = 0; // SysLedBlink(&LED_ATY_t_1); // PWR_BTN_Status_withIT(&PWR_BTN_ATY_t_1); // // UpdateMbRegsFromFloat(mbG, &MODBUS_S_LOW_ATY_Dev_1); // } // if(HW_TIMER_ATY_Dev_4.s1_f == 1){ // HW_TIMER_ATY_Dev_4.s1_f = 0; // // } // } /******************************************************************************/ /******************************** End Of File *********************************/