#千万别使用滴答计时器
使用TIM定时器定时微秒
struct _count_timer count_timer;
struct _deley_timer deley_timer;
void init_count_timer(TIM_HandleTypeDef tim)
{
count_timer.statue = 0;
count_timer.frep_us = 100;
count_timer.time = 0;
count_timer.tim = tim;
}
void start_count(void)
{
if(count_timer.statue != 0)
{
return ;
}
count_timer.statue = 1;
__HAL_TIM_SET_COUNTER(&count_timer.tim,0);
HAL_TIM_Base_Start(&count_timer.tim);
}
uint16_t end_count(void)
{
count_timer.time = __HAL_TIM_GET_COUNTER(&count_timer.tim);
HAL_TIM_Base_Stop(&count_timer.tim);
count_timer.statue = 0;
return count_timer.time /10;
}
void init_deley_timer(TIM_HandleTypeDef tim)
{
deley_timer.state = 0;
deley_timer.tim = tim;
}
uint8_t deley_us(uint16_t time)
{
uint16_t us_time;
if(deley_timer.state != 0)
{
return 0;
}
deley_timer.state = 1;
__HAL_TIM_SET_COUNTER(&deley_timer.tim,0);
HAL_TIM_Base_Start(&deley_timer.tim);
us_time = __HAL_TIM_GET_COUNTER(&deley_timer.tim);
while(us_time < time)
{
us_time = __HAL_TIM_GET_COUNTER(&deley_timer.tim);
}
HAL_TIM_Base_Stop(&deley_timer.tim);
deley_timer.state = 0;
return 1;
}