/**
* @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 *********************************/