Files
B_Current_Ctrl/BSP/drv_tick.c
T
2025-08-28 16:37:05 +08:00

68 lines
881 B
C

#include "drv_tick.h"
//===============time====================
#define MAIN_PERIOD_MS (20)
uint32_t tick_ms = 0;
uint32_t tick_us = 0;
volatile uint32_t tick_count_200Hz = 0;
void tick_init(void)
{
HAL_TIM_Base_Start_IT(&HTIMER_HANDLE);
}
void tick_count(void)
{
tick_ms += 1;
tick_us += 1000;
if(!(tick_ms % MAIN_PERIOD_MS))
{
tick_count_200Hz += 1;
}
}
uint32_t get_msec(void)
{
return tick_ms;
}
uint32_t get_usec(void)
{
return tick_us + HTIMER_HANDLE.Instance->CNT;
}
void delay_usec(uint32_t ticks_usec)
{
uint32_t tick0;
uint32_t tick1;
uint32_t dtick;
tick0 = get_usec();
do
{
tick1 = get_usec();
if (tick1 >= tick0)
{
dtick = tick1 - tick0;
}
else
{
dtick = (0xFFFFFFFF - tick0) + tick1;
}
} while (dtick < ticks_usec);
}