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.
Dependents: STM32L452_Nucleo_ticker
Fork of mbed-dev by
Diff: drivers/InterruptIn.cpp
- Revision:
- 175:af195413fb11
- Parent:
- 160:d5399cc887bb
--- a/drivers/InterruptIn.cpp Mon Oct 02 15:33:19 2017 +0100
+++ b/drivers/InterruptIn.cpp Wed Oct 11 12:45:49 2017 +0100
@@ -19,17 +19,12 @@
namespace mbed {
-static void donothing() {}
-
InterruptIn::InterruptIn(PinName pin) : gpio(),
gpio_irq(),
- _rise(),
- _fall() {
+ _rise(NULL),
+ _fall(NULL) {
// No lock needed in the constructor
- _rise = donothing;
- _fall = donothing;
-
gpio_irq_init(&gpio_irq, pin, (&InterruptIn::_irq_handler), (uint32_t)this);
gpio_init_in(&gpio, pin);
}
@@ -56,7 +51,7 @@
_rise = func;
gpio_irq_set(&gpio_irq, IRQ_RISE, 1);
} else {
- _rise = donothing;
+ _rise = NULL;
gpio_irq_set(&gpio_irq, IRQ_RISE, 0);
}
core_util_critical_section_exit();
@@ -68,7 +63,7 @@
_fall = func;
gpio_irq_set(&gpio_irq, IRQ_FALL, 1);
} else {
- _fall = donothing;
+ _fall = NULL;
gpio_irq_set(&gpio_irq, IRQ_FALL, 0);
}
core_util_critical_section_exit();
@@ -77,8 +72,16 @@
void InterruptIn::_irq_handler(uint32_t id, gpio_irq_event event) {
InterruptIn *handler = (InterruptIn*)id;
switch (event) {
- case IRQ_RISE: handler->_rise(); break;
- case IRQ_FALL: handler->_fall(); break;
+ case IRQ_RISE:
+ if (handler->_rise) {
+ handler->_rise();
+ }
+ break;
+ case IRQ_FALL:
+ if (handler->_fall) {
+ handler->_fall();
+ }
+ break;
case IRQ_NONE: break;
}
}
