66 lines
1.6 KiB
C
66 lines
1.6 KiB
C
/*****************************************************************************
|
||
* @copyright 2024-202, . POWER SUPPLY CO., LTD.
|
||
* @file xxx.c
|
||
* @brief xxxx
|
||
* @author xx
|
||
* @date 2024/08/30
|
||
* @remark 初修订
|
||
*****************************************************************************/
|
||
#include "kit_time2.h"
|
||
|
||
uint32_t kit_time_diff_ms(struct timeval nowtime, struct timeval lasttime)
|
||
{
|
||
uint32_t scount = (nowtime.tv_sec - lasttime.tv_sec) * 1000;
|
||
uint32_t mscount = (nowtime.tv_usec - lasttime.tv_usec) / 1000;
|
||
|
||
return scount + mscount;
|
||
}
|
||
|
||
/**
|
||
* @brief: 计算当前时间和上次时间差,若超过timeout_ms,返回真,并更新lasttime
|
||
* @param {timeval} *lasttime
|
||
* @param {uint32_t} timeout_ms
|
||
* @return {*}
|
||
* @author: XX
|
||
* @Date: 2024-03-10
|
||
*/
|
||
uint8_t kit_isTimeout_by_now(struct timeval *lasttime, uint32_t timeout_ms)
|
||
{
|
||
struct timeval now;
|
||
gettimeofday(&now, NULL);
|
||
if (kit_time_diff_ms(now, *lasttime) >= timeout_ms)
|
||
{
|
||
*lasttime = now;
|
||
return true;
|
||
}
|
||
else
|
||
{
|
||
return false;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* @brief: 获取系统从开始启动以来的tick
|
||
* @param {timeval} *tv
|
||
* @return {*} ms的值
|
||
* @author: XX
|
||
* @Date: 2024-07-07
|
||
*/
|
||
uint64_t get_systicks(struct timeval *tv)
|
||
{
|
||
struct timespec ts;
|
||
// 获取自系统启动以来的滴答数
|
||
if (clock_gettime(1, &ts) == -1) // CLOCK_MONOTONIC
|
||
{
|
||
perror("clock_gettime");
|
||
return 0;
|
||
}
|
||
if (tv != NULL)
|
||
{
|
||
tv->tv_sec = ts.tv_sec;
|
||
tv->tv_usec = ts.tv_nsec / 1000;
|
||
}
|
||
|
||
return ts.tv_sec * 1000 + ts.tv_nsec / 1000000;
|
||
}
|