test

Dependencies:   mbed Watchdog

Dependents:   STM32-MC_node

Committer:
ommpy
Date:
Mon Jul 06 17:18:59 2020 +0530
Revision:
0:d383e2dee0f7
first commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ommpy 0:d383e2dee0f7 1 /* mbed Microcontroller Library
ommpy 0:d383e2dee0f7 2 * Copyright (c) 2006-2013 ARM Limited
ommpy 0:d383e2dee0f7 3 * SPDX-License-Identifier: Apache-2.0
ommpy 0:d383e2dee0f7 4 *
ommpy 0:d383e2dee0f7 5 * Licensed under the Apache License, Version 2.0 (the "License");
ommpy 0:d383e2dee0f7 6 * you may not use this file except in compliance with the License.
ommpy 0:d383e2dee0f7 7 * You may obtain a copy of the License at
ommpy 0:d383e2dee0f7 8 *
ommpy 0:d383e2dee0f7 9 * http://www.apache.org/licenses/LICENSE-2.0
ommpy 0:d383e2dee0f7 10 *
ommpy 0:d383e2dee0f7 11 * Unless required by applicable law or agreed to in writing, software
ommpy 0:d383e2dee0f7 12 * distributed under the License is distributed on an "AS IS" BASIS,
ommpy 0:d383e2dee0f7 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
ommpy 0:d383e2dee0f7 14 * See the License for the specific language governing permissions and
ommpy 0:d383e2dee0f7 15 * limitations under the License.
ommpy 0:d383e2dee0f7 16 */
ommpy 0:d383e2dee0f7 17 #ifndef MBED_TIMER_H
ommpy 0:d383e2dee0f7 18 #define MBED_TIMER_H
ommpy 0:d383e2dee0f7 19
ommpy 0:d383e2dee0f7 20 #include "platform/platform.h"
ommpy 0:d383e2dee0f7 21 #include "hal/ticker_api.h"
ommpy 0:d383e2dee0f7 22 #include "platform/NonCopyable.h"
ommpy 0:d383e2dee0f7 23 #include "platform/mbed_power_mgmt.h"
ommpy 0:d383e2dee0f7 24
ommpy 0:d383e2dee0f7 25 namespace mbed {
ommpy 0:d383e2dee0f7 26 /** \addtogroup drivers */
ommpy 0:d383e2dee0f7 27
ommpy 0:d383e2dee0f7 28 /** A general purpose timer
ommpy 0:d383e2dee0f7 29 *
ommpy 0:d383e2dee0f7 30 * @note Synchronization level: Interrupt safe
ommpy 0:d383e2dee0f7 31 *
ommpy 0:d383e2dee0f7 32 * Example:
ommpy 0:d383e2dee0f7 33 * @code
ommpy 0:d383e2dee0f7 34 * // Count the time to toggle an LED
ommpy 0:d383e2dee0f7 35 *
ommpy 0:d383e2dee0f7 36 * #include "mbed.h"
ommpy 0:d383e2dee0f7 37 *
ommpy 0:d383e2dee0f7 38 * Timer timer;
ommpy 0:d383e2dee0f7 39 * DigitalOut led(LED1);
ommpy 0:d383e2dee0f7 40 * int begin, end;
ommpy 0:d383e2dee0f7 41 *
ommpy 0:d383e2dee0f7 42 * int main() {
ommpy 0:d383e2dee0f7 43 * timer.start();
ommpy 0:d383e2dee0f7 44 * begin = timer.read_us();
ommpy 0:d383e2dee0f7 45 * led = !led;
ommpy 0:d383e2dee0f7 46 * end = timer.read_us();
ommpy 0:d383e2dee0f7 47 * printf("Toggle the led takes %d us", end - begin);
ommpy 0:d383e2dee0f7 48 * }
ommpy 0:d383e2dee0f7 49 * @endcode
ommpy 0:d383e2dee0f7 50 * @ingroup drivers
ommpy 0:d383e2dee0f7 51 */
ommpy 0:d383e2dee0f7 52 class Timer : private NonCopyable<Timer> {
ommpy 0:d383e2dee0f7 53
ommpy 0:d383e2dee0f7 54 public:
ommpy 0:d383e2dee0f7 55 Timer();
ommpy 0:d383e2dee0f7 56 Timer(const ticker_data_t *data);
ommpy 0:d383e2dee0f7 57 ~Timer();
ommpy 0:d383e2dee0f7 58
ommpy 0:d383e2dee0f7 59 /** Start the timer
ommpy 0:d383e2dee0f7 60 */
ommpy 0:d383e2dee0f7 61 void start();
ommpy 0:d383e2dee0f7 62
ommpy 0:d383e2dee0f7 63 /** Stop the timer
ommpy 0:d383e2dee0f7 64 */
ommpy 0:d383e2dee0f7 65 void stop();
ommpy 0:d383e2dee0f7 66
ommpy 0:d383e2dee0f7 67 /** Reset the timer to 0.
ommpy 0:d383e2dee0f7 68 *
ommpy 0:d383e2dee0f7 69 * If it was already running, it will continue
ommpy 0:d383e2dee0f7 70 */
ommpy 0:d383e2dee0f7 71 void reset();
ommpy 0:d383e2dee0f7 72
ommpy 0:d383e2dee0f7 73 /** Get the time passed in seconds
ommpy 0:d383e2dee0f7 74 *
ommpy 0:d383e2dee0f7 75 * @returns Time passed in seconds
ommpy 0:d383e2dee0f7 76 */
ommpy 0:d383e2dee0f7 77 float read();
ommpy 0:d383e2dee0f7 78
ommpy 0:d383e2dee0f7 79 /** Get the time passed in milliseconds
ommpy 0:d383e2dee0f7 80 *
ommpy 0:d383e2dee0f7 81 * @returns Time passed in milliseconds
ommpy 0:d383e2dee0f7 82 */
ommpy 0:d383e2dee0f7 83 int read_ms();
ommpy 0:d383e2dee0f7 84
ommpy 0:d383e2dee0f7 85 /** Get the time passed in microseconds
ommpy 0:d383e2dee0f7 86 *
ommpy 0:d383e2dee0f7 87 * @returns Time passed in microseconds
ommpy 0:d383e2dee0f7 88 */
ommpy 0:d383e2dee0f7 89 int read_us();
ommpy 0:d383e2dee0f7 90
ommpy 0:d383e2dee0f7 91 /** An operator shorthand for read()
ommpy 0:d383e2dee0f7 92 */
ommpy 0:d383e2dee0f7 93 operator float();
ommpy 0:d383e2dee0f7 94
ommpy 0:d383e2dee0f7 95 /** Get in a high resolution type the time passed in microseconds.
ommpy 0:d383e2dee0f7 96 * Returns a 64 bit integer.
ommpy 0:d383e2dee0f7 97 */
ommpy 0:d383e2dee0f7 98 us_timestamp_t read_high_resolution_us();
ommpy 0:d383e2dee0f7 99
ommpy 0:d383e2dee0f7 100 #if !defined(DOXYGEN_ONLY)
ommpy 0:d383e2dee0f7 101 protected:
ommpy 0:d383e2dee0f7 102 us_timestamp_t slicetime();
ommpy 0:d383e2dee0f7 103 int _running; // whether the timer is running
ommpy 0:d383e2dee0f7 104 us_timestamp_t _start; // the start time of the latest slice
ommpy 0:d383e2dee0f7 105 us_timestamp_t _time; // any accumulated time from previous slices
ommpy 0:d383e2dee0f7 106 const ticker_data_t *_ticker_data;
ommpy 0:d383e2dee0f7 107 bool _lock_deepsleep; // flag that indicates if deep sleep should be disabled
ommpy 0:d383e2dee0f7 108 };
ommpy 0:d383e2dee0f7 109 #endif
ommpy 0:d383e2dee0f7 110
ommpy 0:d383e2dee0f7 111 } // namespace mbed
ommpy 0:d383e2dee0f7 112
ommpy 0:d383e2dee0f7 113 #endif