• STM32定时器获取系统时间


    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));
    
    }
    
    
  • 相关阅读:
    iOS.CM5.CM4.CM2
    iOS.Library.Architecture
    iOS.Info.plist
    iOS.ARM-Assembly
    Tools.Png.Compression
    MacDev.GetArchOfLibrary
    iOS.C
    iOS.Notification.Bar.Color
    iOS.-.cxx_destruct
    iOS.UITableView.SectionIndex
  • 原文地址:https://www.cnblogs.com/mengydz/p/13093444.html
Copyright © 2020-2023  润新知