summaryrefslogtreecommitdiffstats
path: root/boot/delay.c
blob: d30b6ca54898b30ac9c18efe63778d3b068388fd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include "project.h"



static volatile uint32_t delay_ms_count;

void
sys_tick_handler (void)
{
  if (delay_ms_count)
    delay_ms_count--;
}
void
ticker_on (void)
{
  /*168MHz 1ms */
  systick_set_reload (48000);
  systick_set_clocksource (STK_CSR_CLKSOURCE_AHB);
  systick_counter_enable();
  /* this done last */
  systick_interrupt_enable();
}

void
ticker_off (void)
{
  systick_interrupt_disable();
  systick_counter_disable();
}


void
delay_ms (uint32_t d)
{
  ticker_on();
  delay_ms_count = d;

  while (delay_ms_count);

  ticker_off();
}