#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); }