hhh

Dependencies:   mbed

Committer:
2bv14ei073
Date:
Thu Dec 01 06:13:26 2016 +0000
Revision:
1:4346149b11d2
Parent:
0:5d419a46e629
timer

Who changed what in which revision?

UserRevisionLine numberNew contents of line
2bv14ei073 0:5d419a46e629 1 /* mbed Microcontroller Library
2bv14ei073 0:5d419a46e629 2 * Copyright (c) 2006-2013 ARM Limited
2bv14ei073 0:5d419a46e629 3 *
2bv14ei073 0:5d419a46e629 4 * Licensed under the Apache License, Version 2.0 (the "License");
2bv14ei073 0:5d419a46e629 5 * you may not use this file except in compliance with the License.
2bv14ei073 0:5d419a46e629 6 * You may obtain a copy of the License at
2bv14ei073 0:5d419a46e629 7 *
2bv14ei073 0:5d419a46e629 8 * http://www.apache.org/licenses/LICENSE-2.0
2bv14ei073 0:5d419a46e629 9 *
2bv14ei073 0:5d419a46e629 10 * Unless required by applicable law or agreed to in writing, software
2bv14ei073 0:5d419a46e629 11 * distributed under the License is distributed on an "AS IS" BASIS,
2bv14ei073 0:5d419a46e629 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2bv14ei073 0:5d419a46e629 13 * See the License for the specific language governing permissions and
2bv14ei073 0:5d419a46e629 14 * limitations under the License.
2bv14ei073 0:5d419a46e629 15 */
2bv14ei073 0:5d419a46e629 16 #ifndef MBED_TIMER_H
2bv14ei073 0:5d419a46e629 17 #define MBED_TIMER_H
2bv14ei073 0:5d419a46e629 18
2bv14ei073 0:5d419a46e629 19 #include "platform.h"
2bv14ei073 0:5d419a46e629 20
2bv14ei073 0:5d419a46e629 21 namespace mbed {
2bv14ei073 0:5d419a46e629 22
2bv14ei073 0:5d419a46e629 23 /** A general purpose timer
2bv14ei073 0:5d419a46e629 24 *
2bv14ei073 0:5d419a46e629 25 * Example:
2bv14ei073 0:5d419a46e629 26 * @code
2bv14ei073 0:5d419a46e629 27 * // Count the time to toggle a LED
2bv14ei073 0:5d419a46e629 28 *
2bv14ei073 0:5d419a46e629 29 * #include "mbed.h"
2bv14ei073 0:5d419a46e629 30 *
2bv14ei073 0:5d419a46e629 31 * Timer timer;
2bv14ei073 0:5d419a46e629 32 * DigitalOut led(LED1);
2bv14ei073 0:5d419a46e629 33 * int begin, end;
2bv14ei073 0:5d419a46e629 34 *
2bv14ei073 0:5d419a46e629 35 * int main() {
2bv14ei073 0:5d419a46e629 36 * timer.start();
2bv14ei073 0:5d419a46e629 37 * begin = timer.read_us();
2bv14ei073 0:5d419a46e629 38 * led = !led;
2bv14ei073 0:5d419a46e629 39 * end = timer.read_us();
2bv14ei073 0:5d419a46e629 40 * printf("Toggle the led takes %d us", end - begin);
2bv14ei073 0:5d419a46e629 41 * }
2bv14ei073 0:5d419a46e629 42 * @endcode
2bv14ei073 0:5d419a46e629 43 */
2bv14ei073 1:4346149b11d2 44
2bv14ei073 0:5d419a46e629 45 class Timer {
2bv14ei073 0:5d419a46e629 46
2bv14ei073 0:5d419a46e629 47 public:
2bv14ei073 0:5d419a46e629 48 Timer();
2bv14ei073 0:5d419a46e629 49
2bv14ei073 0:5d419a46e629 50 /** Start the timer
2bv14ei073 0:5d419a46e629 51 */
2bv14ei073 0:5d419a46e629 52 void start();
2bv14ei073 0:5d419a46e629 53
2bv14ei073 0:5d419a46e629 54 /** Stop the timer
2bv14ei073 0:5d419a46e629 55 */
2bv14ei073 0:5d419a46e629 56 void stop();
2bv14ei073 0:5d419a46e629 57
2bv14ei073 0:5d419a46e629 58 /** Reset the timer to 0.
2bv14ei073 0:5d419a46e629 59 *
2bv14ei073 0:5d419a46e629 60 * If it was already counting, it will continue
2bv14ei073 0:5d419a46e629 61 */
2bv14ei073 0:5d419a46e629 62 void reset();
2bv14ei073 0:5d419a46e629 63
2bv14ei073 0:5d419a46e629 64 /** Get the time passed in seconds
2bv14ei073 0:5d419a46e629 65 */
2bv14ei073 0:5d419a46e629 66 float read();
2bv14ei073 0:5d419a46e629 67
2bv14ei073 0:5d419a46e629 68 /** Get the time passed in mili-seconds
2bv14ei073 0:5d419a46e629 69 */
2bv14ei073 0:5d419a46e629 70 int read_ms();
2bv14ei073 0:5d419a46e629 71
2bv14ei073 0:5d419a46e629 72 /** Get the time passed in micro-seconds
2bv14ei073 0:5d419a46e629 73 */
2bv14ei073 0:5d419a46e629 74 int read_us();
2bv14ei073 0:5d419a46e629 75
2bv14ei073 0:5d419a46e629 76 #ifdef MBED_OPERATORS
2bv14ei073 0:5d419a46e629 77 operator float();
2bv14ei073 0:5d419a46e629 78 #endif
2bv14ei073 0:5d419a46e629 79
2bv14ei073 0:5d419a46e629 80 protected:
2bv14ei073 0:5d419a46e629 81 int slicetime();
2bv14ei073 0:5d419a46e629 82 int _running; // whether the timer is running
2bv14ei073 0:5d419a46e629 83 unsigned int _start; // the start time of the latest slice
2bv14ei073 0:5d419a46e629 84 int _time; // any accumulated time from previous slices
2bv14ei073 0:5d419a46e629 85 };
2bv14ei073 0:5d419a46e629 86
2bv14ei073 0:5d419a46e629 87 } // namespace mbed
2bv14ei073 0:5d419a46e629 88
2bv14ei073 0:5d419a46e629 89 #endif