2020년 3월 24일 화요일

STM32 : HAL_IncTick() - microsecond 처리

HAL_IncTick() 함수 overriding

__IO uint32_t usTick=0;
extern __IO uint32_t uwTick;

void HAL_IncTick(void)
{
  usTick++;
  if (usTick==1000)
  {
    uwTick++;
    usTick=0;
  }
}

요렇게 해주면 HAL_Delay 등의 함수들이 틀어지지 않고 정상 동작하고, 1microsecond 단위의 tick 처리가 가능하다.


출처: https://antinuke.tistory.com/20 [켄아자씨의 블로그]

=======================================================================
__weak void HAL_Delay(__IO uint32_t Delay)
{
  uint32_t tickstart = HAL_GetTick();
  uint32_t wait = Delay;
  
  /* Add a period to guarantee minimum wait */
  if (wait < HAL_MAX_DELAY)
  {
     wait++;
  }
  
  while((HAL_GetTick() - tickstart) < wait)
  {
  }

}

댓글 없음:

댓글 쓰기