projects
/
bertos.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Serial port support for ATMega1280 (contributed by Fabio Bizzi).
[bertos.git]
/
bertos
/
cpu
/
cortex-m3
/
drv
/
timer_cm3.h
diff --git
a/bertos/cpu/cortex-m3/drv/timer_cm3.h
b/bertos/cpu/cortex-m3/drv/timer_cm3.h
index 6311d506caa0ccb83b11e2d44a1d590f1862273c..6778606d29850b9a4c39cdd867dc7d4e69ccd027 100644
(file)
--- a/
bertos/cpu/cortex-m3/drv/timer_cm3.h
+++ b/
bertos/cpu/cortex-m3/drv/timer_cm3.h
@@
-38,6
+38,11
@@
#ifndef TIMER_CM3_H
#define TIMER_CM3_H
#ifndef TIMER_CM3_H
#define TIMER_CM3_H
+#include "cfg/cfg_timer.h" /* CONFIG_TIMER */
+
+#include <cpu/detect.h>
+#include <cpu/irq.h>
+
#if CPU_CM3_LM3S
#include <io/lm3s.h>
#elif CPU_CM3_STM32
#if CPU_CM3_LM3S
#include <io/lm3s.h>
#elif CPU_CM3_STM32
@@
-52,40
+57,49
@@
*
* Select which hardware timer interrupt to use for system clock and softtimers.
*
*
* Select which hardware timer interrupt to use for system clock and softtimers.
*
- * $WIZ$ timer_select = "TIMER_DEFAULT"
+ * $WIZ$ timer_select = "TIMER_DEFAULT"
, "TIMER_ON_GPTM"
*/
*/
-#define TIMER_DEFAULT /* */ ///< Default system timer
+#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
-
/* Ticks frequency (HZ)
*/
-#define TIMER_TICKS_PER_SEC 1000
+
/* Frequency of the hardware high-precision timer.
*/
+ #define TIMER_HW_HPTICKS_PER_SEC (CPU_FREQ)
-
/* 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
)
-/* 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
-
/** 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)
-/* 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 void timer_hw_irq(void)
-{
-}
-INLINE bool timer_hw_triggered(void)
-{
- return true;
-}
+ INLINE bool timer_hw_triggered(void)
+ {
+ return true;
+ }
+
+ INLINE hptime_t timer_hw_hpread(void)
+ {
+ return (TIMER_HW_CNT - NVIC_ST_CURRENT_R);
+ }
+
+#else
-INLINE hptime_t timer_hw_hpread(void)
-{
- return HWREG(NVIC_ST_CURRENT);
-}
+ #error Unimplemented value for CONFIG_TIMER
+#endif /* CONFIG_TIMER */
void timer_hw_init(void);
void timer_hw_exit(void);
void timer_hw_init(void);
void timer_hw_exit(void);