delay.c


1
#include "main.h"
2
#include "delay.h"
3
4
//--------------------------------------------
5
// for 168 MHz @ Optimization-Level -OS
6
//--------------------------------------------
7
#define COUNTS_PER_MICROSECOND 56
8
inline void delay_us(unsigned int d)
9
{
10
  unsigned int count = d * COUNTS_PER_MICROSECOND - 2;
11
  __asm volatile(" mov r0, %[count]  \n\t"
12
          "1: subs r0, #1            \n\t"
13
          "   bhi 1b                 \n\t"
14
          :
15
          : [count] "r" (count)
16
          : "r0");
17
}
18
19
//--------------------------------------------
20
// for 168 MHz @ Optimization-Level -OS
21
//--------------------------------------------
22
void delay_ms(unsigned int d)
23
{
24
  while (d--) delay_us(999);
25
}