X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fcpu%2Fcortex-m3%2Fdrv%2Ftimer_cm3.h;h=0d45ad26453e3177424b9a8700d92749727354a0;hb=563795df4180aaceb7d69306551230c98fbca879;hp=0418a45bfa3744bfd5c84c04a55e55f0b6e7e888;hpb=5417946aa2c0faa7f035305f52e4a545a9e5aa6e;p=bertos.git diff --git a/bertos/cpu/cortex-m3/drv/timer_cm3.h b/bertos/cpu/cortex-m3/drv/timer_cm3.h index 0418a45b..0d45ad26 100644 --- a/bertos/cpu/cortex-m3/drv/timer_cm3.h +++ b/bertos/cpu/cortex-m3/drv/timer_cm3.h @@ -30,16 +30,80 @@ * * --> * - * \author Francesco Sacchi + * \author Andrea Righi * - * \brief Low-level timer module for Cortex-M3 (interface). + * \brief Low-level timer driver (SysTick) for Cortex-M3. */ +#ifndef TIMER_CM3_H +#define TIMER_CM3_H + +#include "cfg/cfg_timer.h" /* CONFIG_TIMER */ + #include +#include #if CPU_CM3_LM3S - #include "timer_lm3s.h" + #include +#elif CPU_CM3_STM32 + #include +#elif CPU_CM3_SAM3 + #include /*#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", "TIMER_ON_GPTM" + */ +#define TIMER_ON_GPTM 1 + +#define TIMER_DEFAULT TIMER_ON_GPTM ///< Default system timer + +#if (CONFIG_TIMER == TIMER_ON_GPTM) + /* 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 (TIMER_HW_CNT - NVIC_ST_CURRENT_R); + } + +#else + + #error Unimplemented value for CONFIG_TIMER +#endif /* CONFIG_TIMER */ + +void timer_hw_init(void); +void timer_hw_exit(void); + +#endif /* TIMER_CM3_H */