volatile uint32_t glo_50ms=0;
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim->Instance == TIM7)
{
glo_50ms++;
}
}
uint64_t micros(void)
{
uint16_t cnt;
cnt=TIM7->CNT;
return glo_50ms*50000+cnt;
}
uint32_t millis(void)
{
uint16_t cnt;
cnt = TIM7->CNT;
return glo_50ms*50 + cnt/1000;
}
uint64_t pre_time_1ms;
uint32_t pre_time_10ms;
void Main_loop_1MS_First(void);
void Main_loop_10MS_First(void);
void Main_loop_10MS_Second(void);
while(1)
{
if(micros() - pre_time_1ms > 1000)//1 ms loop
{
pre_time_1ms = micros();
Main_loop_1MS_First();
}
if(millis() - pre_time_10ms > 10)//10 ms loop
{
pre_time_1ms = micros();
Main_loop_10MS_First();
Main_loop_10MS_Second();
}
}
bool Wait_processing(uint16_t TMS)
{
if(TIM5->CNT < TMS)
{
return true;
}else
{
TIM5->CNT = 0;
return false;
}
}
while(1)
{
while(Wait_processing(1000));
}