Add wizard config mark.
[bertos.git] / bertos / cpu / cortex-m3 / drv / timer_cm3.h
index 0418a45bfa3744bfd5c84c04a55e55f0b6e7e888..6311d506caa0ccb83b11e2d44a1d590f1862273c 100644 (file)
  *
  * -->
  *
- * \author Francesco Sacchi <batt@develer.com>
+ * \author Andrea Righi <arighi@develer.com>
  *
- * \brief Low-level timer module for Cortex-M3 (interface).
+ * \brief Low-level timer driver (SysTick) for Cortex-M3.
  */
 
-#include <cpu/detect.h>
+#ifndef TIMER_CM3_H
+#define TIMER_CM3_H
 
 #if CPU_CM3_LM3S
-       #include "timer_lm3s.h"
+       #include <io/lm3s.h>
+#elif CPU_CM3_STM32
+       #include <io/stm32.h>
 /*#elif  Add other families here */
 #else
        #error Unknown CPU
 #endif
+
+/**
+ * \name Values for CONFIG_TIMER.
+ *
+ * Select which hardware timer interrupt to use for system clock and softtimers.
+ *
+ * $WIZ$ timer_select = "TIMER_DEFAULT"
+ */
+#define TIMER_DEFAULT  /*  */ ///< Default system timer
+
+/* Ticks frequency (HZ) */
+#define TIMER_TICKS_PER_SEC    1000
+
+/* Frequency of the hardware high-precision timer. */
+#define TIMER_HW_HPTICKS_PER_SEC (CPU_FREQ)
+
+/* Maximum value of the high-precision hardware counter register */
+#define TIMER_HW_CNT (CPU_FREQ / TIMER_TICKS_PER_SEC)
+
+/** Type of time expressed in ticks of the hardware high-precision timer */
+typedef uint32_t hptime_t;
+#define SIZEOF_HPTIME_T 4
+
+/* Timer ISR prototype */
+ISR_PROTO_CONTEXT_SWITCH(timer_handler);
+#define DEFINE_TIMER_ISR DECLARE_ISR_CONTEXT_SWITCH(timer_handler)
+
+INLINE void timer_hw_irq(void)
+{
+}
+
+INLINE bool timer_hw_triggered(void)
+{
+       return true;
+}
+
+INLINE hptime_t timer_hw_hpread(void)
+{
+       return HWREG(NVIC_ST_CURRENT);
+}
+
+void timer_hw_init(void);
+void timer_hw_exit(void);
+
+#endif /* TIMER_CM3_H */