Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of mbed by
Ticker.h
00001 /* mbed Microcontroller Library - Ticker 00002 * Copyright (c) 2007-2009 ARM Limited. All rights reserved. 00003 */ 00004 00005 #ifndef MBED_TICKER_H 00006 #define MBED_TICKER_H 00007 00008 #include "TimerEvent.h" 00009 #include "FunctionPointer.h" 00010 00011 namespace mbed { 00012 00013 /** A Ticker is used to call a function at a recurring interval 00014 * 00015 * You can use as many seperate Ticker objects as you require. 00016 * 00017 * Example: 00018 * @code 00019 * // Toggle the blinking led after 5 seconds 00020 * 00021 * #include "mbed.h" 00022 * 00023 * Ticker timer; 00024 * DigitalOut led1(LED1); 00025 * DigitalOut led2(LED2); 00026 * 00027 * int flip = 0; 00028 * 00029 * void attime() { 00030 * flip = !flip; 00031 * } 00032 * 00033 * int main() { 00034 * timer.attach(&attime, 5); 00035 * while(1) { 00036 * if(flip == 0) { 00037 * led1 = !led1; 00038 * } else { 00039 * led2 = !led2; 00040 * } 00041 * wait(0.2); 00042 * } 00043 * } 00044 * @endcode 00045 */ 00046 class Ticker : public TimerEvent { 00047 00048 public: 00049 00050 /** Attach a function to be called by the Ticker, specifiying the interval in seconds 00051 * 00052 * @param fptr pointer to the function to be called 00053 * @param t the time between calls in seconds 00054 */ 00055 void attach(void (*fptr)(void), float t) { 00056 attach_us(fptr, t * 1000000.0f); 00057 } 00058 00059 /** Attach a member function to be called by the Ticker, specifiying the interval in seconds 00060 * 00061 * @param tptr pointer to the object to call the member function on 00062 * @param mptr pointer to the member function to be called 00063 * @param t the time between calls in seconds 00064 */ 00065 template<typename T> 00066 void attach(T* tptr, void (T::*mptr)(void), float t) { 00067 attach_us(tptr, mptr, t * 1000000.0f); 00068 } 00069 00070 /** Attach a function to be called by the Ticker, specifiying the interval in micro-seconds 00071 * 00072 * @param fptr pointer to the function to be called 00073 * @param t the time between calls in micro-seconds 00074 */ 00075 void attach_us(void (*fptr)(void), unsigned int t) { 00076 _function.attach(fptr); 00077 setup(t); 00078 } 00079 00080 /** Attach a member function to be called by the Ticker, specifiying the interval in micro-seconds 00081 * 00082 * @param tptr pointer to the object to call the member function on 00083 * @param mptr pointer to the member function to be called 00084 * @param t the time between calls in micro-seconds 00085 */ 00086 template<typename T> 00087 void attach_us(T* tptr, void (T::*mptr)(void), unsigned int t) { 00088 _function.attach(tptr, mptr); 00089 setup(t); 00090 } 00091 00092 /** Detach the function 00093 */ 00094 void detach(); 00095 00096 protected: 00097 00098 void setup(unsigned int t); 00099 virtual void handler(); 00100 00101 unsigned int _delay; 00102 FunctionPointer _function; 00103 00104 }; 00105 00106 } // namespace mbed 00107 00108 #endif
Generated on Wed Jul 13 2022 03:42:26 by
1.7.2