
#include "checkTime.h"



typedef struct _timeData {
    /* 程序执行前的时间 */
    uint32_t time_ms1;
    uint16_t time_tick1;
    
    /* 程序执行完的时间 */
    uint32_t time_ms2;
    uint16_t time_tick2;


    /* 程序执行所用的时间（ms） */
    float time_s;
}timeData;

static timeData checkTimeData;

volatile static uint32_t hw_sys_tick_ms = 0;	//ms 自增计数变量

float checkAbnormalTime;


#define tim TIM15
#define timLard 36000.0

/**
 * hw_inc_tick函数
 * 
 * 本函数用于递增硬件系统的毫秒计时器hw_sys_tick_ms。
 * 每次调用此函数，hw_sys_tick_ms将增加1。
 * 
 * 注意：此函数没有输入参数和返回值。
 */
void hw_inc_tick(void)
{
    ++hw_sys_tick_ms;
}

void checkTimeInit(void)
{
    checkTimeData.time_ms1 = hw_sys_tick_ms;
    checkTimeData.time_tick1 = tim->CNT;
}



float getCheckTime(void)
{
    checkTimeData.time_ms2 = hw_sys_tick_ms;
    checkTimeData.time_tick2 = tim->CNT;

    checkTimeData.time_s = checkTimeData.time_ms2 - checkTimeData.time_ms1
        + (checkTimeData.time_tick2 - checkTimeData.time_tick1) / timLard;

    return checkTimeData.time_s;
}


