#include "timeout.h"
#include "../../User/stm32f10x_it.h"

/**
  * @brief 设置定时器
  * @par param[timeout_t] *tt
  * @par param[uint32_t] val，延时ms
  * @par param[uint8_t] flg。0:不使能；1单次使能；0xFF连续使能
  */
void timeout_setValue(timeout_t *tt,uint32_t val){
  tt->counter = Get_SysTick();
  tt->timeout = val;
}
/**
 * @brief 启动定时器
 * @param  tt               定时器指针
 * @param  flg              是否开启
 */
void timeout_start(timeout_t *tt){
    tt->counter = Get_SysTick();
    tt->flag = 1;

}

/**
 * @brief 停止定时器
 * @param  tt               定时器指针
 */
void timeout_stop(timeout_t *tt){
  tt->flag = 0;
}


/**
 * @brief 返回定时器是否超时
 * @param  tt               定时器指针
 * @return uint8_t 1:超时（或flag==0），0:未超时
 */
uint8_t timeout_isOut(timeout_t *tt){
  if(tt->flag){
    if((Get_SysTick() - tt->counter) > tt->timeout){
      tt->counter = Get_SysTick();
      if(tt->flag == 1){
        tt->flag = 0;
      }
      return 1;
    }
    else{
      return 0;
    }
  }
  else{
    return 1;
  }
}
