mbed libraries for KL25Z

Dependents:   FRDM_RGBLED

Committer:
emilmont
Date:
Fri Nov 09 11:33:53 2012 +0000
Revision:
8:c14af7958ef5
Parent:
2:e9a661555b58
Child:
9:663789d7729f
SPI driver; ADC driver; DAC driver; microlib support; general bugfixing

Who changed what in which revision?

UserRevisionLine numberNew contents of line
emilmont 2:e9a661555b58 1 /* mbed Microcontroller Library - Timer
emilmont 2:e9a661555b58 2 * Copyright (c) 2007-2009 ARM Limited. All rights reserved.
emilmont 8:c14af7958ef5 3 */
emilmont 2:e9a661555b58 4 #ifndef MBED_TIMER_H
emilmont 2:e9a661555b58 5 #define MBED_TIMER_H
emilmont 2:e9a661555b58 6
emilmont 2:e9a661555b58 7 #include "platform.h"
emilmont 2:e9a661555b58 8
emilmont 2:e9a661555b58 9 namespace mbed {
emilmont 2:e9a661555b58 10
emilmont 8:c14af7958ef5 11 /** A general purpose timer
emilmont 2:e9a661555b58 12 *
emilmont 2:e9a661555b58 13 * Example:
emilmont 8:c14af7958ef5 14 * @code
emilmont 8:c14af7958ef5 15 * // Count the time to toggle a LED
emilmont 8:c14af7958ef5 16 *
emilmont 8:c14af7958ef5 17 * #include "mbed.h"
emilmont 8:c14af7958ef5 18 *
emilmont 8:c14af7958ef5 19 * Timer timer;
emilmont 8:c14af7958ef5 20 * DigitalOut led(LED1);
emilmont 8:c14af7958ef5 21 * int begin, end;
emilmont 8:c14af7958ef5 22 *
emilmont 8:c14af7958ef5 23 * int main() {
emilmont 8:c14af7958ef5 24 * timer.start();
emilmont 8:c14af7958ef5 25 * begin = timer.read_us();
emilmont 8:c14af7958ef5 26 * led = !led;
emilmont 8:c14af7958ef5 27 * end = timer.read_us();
emilmont 8:c14af7958ef5 28 * printf("Toggle the led takes %d us", end - begin);
emilmont 8:c14af7958ef5 29 * }
emilmont 8:c14af7958ef5 30 * @endcode
emilmont 2:e9a661555b58 31 */
emilmont 8:c14af7958ef5 32 class Timer {
emilmont 2:e9a661555b58 33
emilmont 2:e9a661555b58 34 public:
emilmont 8:c14af7958ef5 35 Timer();
emilmont 2:e9a661555b58 36
emilmont 8:c14af7958ef5 37 /** Start the timer
emilmont 2:e9a661555b58 38 */
emilmont 2:e9a661555b58 39 void start();
emilmont 2:e9a661555b58 40
emilmont 8:c14af7958ef5 41 /** Stop the timer
emilmont 2:e9a661555b58 42 */
emilmont 2:e9a661555b58 43 void stop();
emilmont 2:e9a661555b58 44
emilmont 8:c14af7958ef5 45 /** Reset the timer to 0.
emilmont 2:e9a661555b58 46 *
emilmont 2:e9a661555b58 47 * If it was already counting, it will continue
emilmont 2:e9a661555b58 48 */
emilmont 2:e9a661555b58 49 void reset();
emilmont 2:e9a661555b58 50
emilmont 8:c14af7958ef5 51 /** Get the time passed in seconds
emilmont 2:e9a661555b58 52 */
emilmont 2:e9a661555b58 53 float read();
emilmont 2:e9a661555b58 54
emilmont 8:c14af7958ef5 55 /** Get the time passed in mili-seconds
emilmont 2:e9a661555b58 56 */
emilmont 2:e9a661555b58 57 int read_ms();
emilmont 2:e9a661555b58 58
emilmont 8:c14af7958ef5 59 /** Get the time passed in micro-seconds
emilmont 2:e9a661555b58 60 */
emilmont 2:e9a661555b58 61 int read_us();
emilmont 2:e9a661555b58 62
emilmont 2:e9a661555b58 63 #ifdef MBED_OPERATORS
emilmont 2:e9a661555b58 64 operator float();
emilmont 2:e9a661555b58 65 #endif
emilmont 2:e9a661555b58 66
emilmont 2:e9a661555b58 67 protected:
emilmont 8:c14af7958ef5 68 int slicetime();
emilmont 2:e9a661555b58 69 int _running; // whether the timer is running
emilmont 2:e9a661555b58 70 unsigned int _start; // the start time of the latest slice
emilmont 2:e9a661555b58 71 int _time; // any accumulated time from previous slices
emilmont 2:e9a661555b58 72 };
emilmont 2:e9a661555b58 73
emilmont 2:e9a661555b58 74 } // namespace mbed
emilmont 2:e9a661555b58 75
emilmont 2:e9a661555b58 76 #endif