123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- #ifndef MBED_INTERRUPTIN_H
- #define MBED_INTERRUPTIN_H
- #include "platform/platform.h"
- #if defined (DEVICE_INTERRUPTIN) || defined(DOXYGEN_ONLY)
- #include "hal/gpio_api.h"
- #include "hal/gpio_irq_api.h"
- #include "platform/Callback.h"
- #include "platform/mbed_critical.h"
- #include "platform/mbed_toolchain.h"
- #include "platform/NonCopyable.h"
- namespace mbed {
- class InterruptIn : private NonCopyable<InterruptIn> {
- public:
-
- InterruptIn(PinName pin);
-
- InterruptIn(PinName pin, PinMode mode);
- virtual ~InterruptIn();
-
- int read();
-
- operator int();
-
- void rise(Callback<void()> func);
-
- template<typename T, typename M>
- MBED_DEPRECATED_SINCE("mbed-os-5.1",
- "The rise function does not support cv-qualifiers. Replaced by "
- "rise(callback(obj, method)).")
- void rise(T *obj, M method)
- {
- core_util_critical_section_enter();
- rise(callback(obj, method));
- core_util_critical_section_exit();
- }
-
- void fall(Callback<void()> func);
-
- template<typename T, typename M>
- MBED_DEPRECATED_SINCE("mbed-os-5.1",
- "The fall function does not support cv-qualifiers. Replaced by "
- "fall(callback(obj, method)).")
- void fall(T *obj, M method)
- {
- core_util_critical_section_enter();
- fall(callback(obj, method));
- core_util_critical_section_exit();
- }
-
- void mode(PinMode pull);
-
- void enable_irq();
-
- void disable_irq();
- static void _irq_handler(uint32_t id, gpio_irq_event event);
- protected:
- gpio_t gpio;
- gpio_irq_t gpio_irq;
- Callback<void()> _rise;
- Callback<void()> _fall;
- void irq_init(PinName pin);
- };
- }
- #endif
- #endif
|