Paparazzi UAS  v4.2.2_stable-4-gcc32f65
Paparazzi is a free software Unmanned Aircraft System.
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
sys_time_arch.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright (C) 2009-2011 The Paparazzi Team
4  *
5  * This file is part of paparazzi.
6  *
7  * paparazzi is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2, or (at your option)
10  * any later version.
11  *
12  * paparazzi is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with paparazzi; see the file COPYING. If not, write to
19  * the Free Software Foundation, 59 Temple Place - Suite 330,
20  * Boston, MA 02111-1307, USA.
21  *
22  */
23 
30 #ifndef SYS_TIME_ARCH_H
31 #define SYS_TIME_ARCH_H
32 
33 #include "mcu_periph/sys_time.h"
34 
35 #include <stm32/gpio.h>
36 #include <stm32/rcc.h>
37 #include "std.h"
38 
39 extern void sys_tick_irq_handler(void);
40 
41 #define CPU_TICKS_OF_SEC(s) (uint32_t)((s) * AHB_CLK + 0.5)
42 #define SIGNED_CPU_TICKS_OF_SEC(s) (int32_t)((s) * AHB_CLK + 0.5)
43 
44 #define SEC_OF_CPU_TICKS(t) ((t) / AHB_CLK)
45 #define MSEC_OF_CPU_TICKS(t) ((t) / (AHB_CLK/1000))
46 #define USEC_OF_CPU_TICKS(t) ((t) / (AHB_CLK/1000000))
47 
48 #define GET_CUR_TIME_USEC() (sys_time.nb_sec * 1000000 + \
49  USEC_OF_CPU_TICKS(sys_time.nb_sec_rem) + \
50  USEC_OF_CPU_TICKS(SysTick->LOAD - SysTick->VAL))
51 
52 #define SysTimeTimerStart(_t) { _t = GET_CUR_TIME_USEC(); }
53 #define SysTimeTimer(_t) ( GET_CUR_TIME_USEC() - (_t))
54 #define SysTimeTimerStop(_t) { _t = ( GET_CUR_TIME_USEC() - (_t)); }
55 
56 
58 // FIXME: directly use the SysTick->VAL here
59 static inline void sys_time_usleep(uint32_t us) {
60  uint32_t end = GET_CUR_TIME_USEC() + us;
61  while ((uint32_t)GET_CUR_TIME_USEC() < end);
62 }
63 
64 #endif /* SYS_TIME_ARCH_H */
static void sys_time_usleep(uint32_t us)
Busy wait, in microseconds.
Definition: sys_time_arch.h:59
#define GET_CUR_TIME_USEC()
Definition: sys_time_arch.h:48
Architecture independent timing functions.
unsigned long uint32_t
Definition: types.h:18
void sys_tick_irq_handler(void)
Definition: sys_time_arch.c:55