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 | }
|