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