Library to access LPC17xx peripherals. It uses static inline functions, constant propagation and dead code elimination to be as fast as possible.
Dependents: Chua-VGA Wolfram-1D-VGA WolframRnd-1D-VGA Basin-VGA ... more
systick.h@2:148b9af2b336, 2012-01-04 (annotated)
- Committer:
- Ivop
- Date:
- Wed Jan 04 01:42:56 2012 +0000
- Revision:
- 2:148b9af2b336
- Parent:
- 1:bc492a93e116
fixed bug in fl_uart_send_byte. thanks to smayr for finding it
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Ivop | 1:bc492a93e116 | 1 | /* Copyright (C) 2011 by Ivo van Poorten <ivop@euronet.nl> |
Ivop | 1:bc492a93e116 | 2 | * This file is licensed under the terms of the GNU Lesser |
Ivop | 1:bc492a93e116 | 3 | * General Public License, version 3. |
Ivop | 1:bc492a93e116 | 4 | */ |
Ivop | 1:bc492a93e116 | 5 | |
Ivop | 1:bc492a93e116 | 6 | #ifndef FASTLIB_SYSTICK_H |
Ivop | 1:bc492a93e116 | 7 | #define FASTLIB_SYSTICK_H |
Ivop | 1:bc492a93e116 | 8 | |
Ivop | 1:bc492a93e116 | 9 | #include "fastlib/common.h" |
Ivop | 1:bc492a93e116 | 10 | |
Ivop | 1:bc492a93e116 | 11 | #define FL_STCTRL ((volatile uint32_t *) 0xE000E010) |
Ivop | 1:bc492a93e116 | 12 | #define FL_STRELOAD ((volatile uint32_t *) 0xE000E014) |
Ivop | 1:bc492a93e116 | 13 | #define FL_STCURR ((volatile uint32_t *) 0xE000E018) |
Ivop | 1:bc492a93e116 | 14 | #define FL_STCALIB ((volatile uint32_t *) 0xE000E01C) |
Ivop | 1:bc492a93e116 | 15 | |
Ivop | 1:bc492a93e116 | 16 | static inline void fl_systick_control(const unsigned enable, |
Ivop | 1:bc492a93e116 | 17 | const unsigned interrupt_enable, |
Ivop | 1:bc492a93e116 | 18 | const unsigned use_cpu_clock) { |
Ivop | 1:bc492a93e116 | 19 | *FL_STCTRL = enable | (interrupt_enable<<1) | (use_cpu_clock<<2); |
Ivop | 1:bc492a93e116 | 20 | } |
Ivop | 1:bc492a93e116 | 21 | |
Ivop | 1:bc492a93e116 | 22 | static inline unsigned fl_systick_get_counter_flag(void) { |
Ivop | 1:bc492a93e116 | 23 | return *FL_STCTRL & (1U<<16); |
Ivop | 1:bc492a93e116 | 24 | } |
Ivop | 1:bc492a93e116 | 25 | |
Ivop | 1:bc492a93e116 | 26 | static inline void fl_systick_set_reload_value(const unsigned value) { |
Ivop | 1:bc492a93e116 | 27 | *FL_STRELOAD = value; |
Ivop | 1:bc492a93e116 | 28 | } |
Ivop | 1:bc492a93e116 | 29 | |
Ivop | 1:bc492a93e116 | 30 | static inline unsigned fl_systick_get_reload_value(void) { |
Ivop | 1:bc492a93e116 | 31 | return *FL_STRELOAD; |
Ivop | 1:bc492a93e116 | 32 | } |
Ivop | 1:bc492a93e116 | 33 | |
Ivop | 1:bc492a93e116 | 34 | static inline unsigned fl_systick_get_current_value(void) { |
Ivop | 1:bc492a93e116 | 35 | return *FL_STCURR; |
Ivop | 1:bc492a93e116 | 36 | } |
Ivop | 1:bc492a93e116 | 37 | |
Ivop | 1:bc492a93e116 | 38 | static inline void fl_systick_set_calibration(const unsigned reload_value, |
Ivop | 1:bc492a93e116 | 39 | const unsigned has_skew, |
Ivop | 1:bc492a93e116 | 40 | const unsigned no_ext_ref_clock) { |
Ivop | 1:bc492a93e116 | 41 | *FL_STCALIB = reload_value | (has_skew<<30) | (no_ext_ref_clock<<31); |
Ivop | 1:bc492a93e116 | 42 | } |
Ivop | 1:bc492a93e116 | 43 | |
Ivop | 1:bc492a93e116 | 44 | static inline unsigned fl_systick_get_calibration_reload_value(void) { |
Ivop | 1:bc492a93e116 | 45 | return *FL_STCALIB & ((1U<<24)-1); |
Ivop | 1:bc492a93e116 | 46 | } |
Ivop | 1:bc492a93e116 | 47 | |
Ivop | 1:bc492a93e116 | 48 | static inline unsigned fl_systick_get_calibration_skew(void) { |
Ivop | 1:bc492a93e116 | 49 | return *FL_STCALIB & (1U<<30); |
Ivop | 1:bc492a93e116 | 50 | } |
Ivop | 1:bc492a93e116 | 51 | |
Ivop | 1:bc492a93e116 | 52 | static inline unsigned fl_systick_get_calibration_noref(void) { |
Ivop | 1:bc492a93e116 | 53 | return *FL_STCALIB & (1U<<31); |
Ivop | 1:bc492a93e116 | 54 | } |
Ivop | 1:bc492a93e116 | 55 | |
Ivop | 1:bc492a93e116 | 56 | #endif |