Paparazzi UAS v7.0_unstable
Paparazzi is a free software Unmanned Aircraft System.
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules 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
32#ifndef SYS_TIME_ARCH_H
33#define SYS_TIME_ARCH_H
34
35#include "mcu_periph/sys_time.h"
36
37#include <libopencm3/stm32/gpio.h>
38#include <libopencm3/stm32/rcc.h>
39#include <libopencm3/cm3/systick.h>
40#include "std.h"
41
53
65
76
77
83static inline void sys_time_usleep(uint32_t us)
84{
85 // start time
87 // max time of one full counter cycle (n + 1 ticks)
89 // number of cycles
90 uint32_t n = us / DT;
91 // remaining number of cpu ticks
93 // end time depend on the current value of the counter
94 uint32_t end;
95 if (rem < start) {
96 end = start - rem;
97 } else {
98 // one more count flag is required
99 n++;
100 end = systick_get_reload() - rem + start;
101 }
102 // count number of cycles (when counter reachs 0)
103 while (n) {
104 while (!systick_get_countflag());
105 n--;
106 }
107 // wait remaining ticks
108 while (systick_get_value() > end);
109}
110
111#endif /* SYS_TIME_ARCH_H */
void sys_time_usleep(uint32_t us)
sys_time_usleep(uint32_t us)
uint32_t get_sys_time_usec100(void)
Get the time in microseconds divided by 100 since startup.
uint32_t get_sys_time_usec(void)
Get the time in microseconds since startup.
uint32_t get_sys_time_msec(void)
Get the time in milliseconds since startup.
uint16_t foo
Definition main_demo5.c:58
Architecture independent timing functions.
static uint32_t msec_of_cpu_ticks(uint32_t cpu_ticks)
Definition sys_time.h:202
volatile uint32_t nb_sec
full seconds since startup
Definition sys_time.h:72
volatile uint32_t nb_sec_rem
remainder of seconds since startup in CPU_TICKS
Definition sys_time.h:73
static uint32_t cpu_ticks_of_usec(uint32_t usec)
Definition sys_time.h:187
static uint32_t usec_of_cpu_ticks(uint32_t cpu_ticks)
Definition sys_time.h:207
unsigned int uint32_t
Typedef defining 32 bit unsigned int type.