#include "stm32g4xx.h"

#include "tick.h"

static unsigned long Tick = 0;

extern "C" void SysTick_Handler()
{
  Tick++;
}
//------------------------------------------------------------------------------

void TICK_Init()
{
  SysTick->LOAD = SystemCoreClock / 1000;
  SysTick->VAL = 0UL;
  SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk;

  NVIC_SetPriority(SysTick_IRQn, 0);
}
//------------------------------------------------------------------------------

unsigned long TICK_GetCount() // ms
{
  return Tick;
}
//------------------------------------------------------------------------------


void Tick_Delay(unsigned long ms)
{
    const unsigned long start = Tick;
    while ((Tick - start) < ms) {
        __NOP();                     
    }
}