diff --git a/libraries/mbed/common/pinmap_common.c b/libraries/mbed/common/pinmap_common.c index eef617fd45..3dc4433176 100644 --- a/libraries/mbed/common/pinmap_common.c +++ b/libraries/mbed/common/pinmap_common.c @@ -17,7 +17,8 @@ #include "error.h" void pinmap_pinout(PinName pin, const PinMap *map) { - if (pin == NC) return; + if (pin == NC) + return; while (map->pin != NC) { if (map->pin == pin) { @@ -33,11 +34,14 @@ void pinmap_pinout(PinName pin, const PinMap *map) { uint32_t pinmap_merge(uint32_t a, uint32_t b) { // both are the same (inc both NC) - if (a == b) return a; + if (a == b) + return a; // one (or both) is not connected - if (a == (uint32_t)NC) return b; - if (b == (uint32_t)NC) return a; + if (a == (uint32_t)NC) + return b; + if (b == (uint32_t)NC) + return a; // mis-match error case error("pinmap mis-match"); diff --git a/libraries/mbed/common/retarget.cpp b/libraries/mbed/common/retarget.cpp index 35a815916c..cfc3f1d274 100644 --- a/libraries/mbed/common/retarget.cpp +++ b/libraries/mbed/common/retarget.cpp @@ -396,6 +396,13 @@ extern "C" WEAK void __cxa_pure_virtual(void) { #endif +#include "mbed_interface.h" + +extern "C" void abort(void) { + mbed_die(); + while(1); +} + // **************************************************************************** // mbed_main is a function that is called before main() // mbed_sdk_init() is also a function that is called before main(), but unlike diff --git a/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_K20D5M/gpio_api.c b/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_K20D5M/gpio_api.c index 5daf354974..70671ed002 100644 --- a/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_K20D5M/gpio_api.c +++ b/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_K20D5M/gpio_api.c @@ -13,19 +13,21 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include #include "gpio_api.h" #include "pinmap.h" uint32_t gpio_set(PinName pin) { + assert(pin != (PinName)NC); pin_function(pin, 1); return 1 << ((pin & 0x7F) >> 2); } void gpio_init(gpio_t *obj, PinName pin) { - if(pin == (PinName)NC) + obj->pin = pin; + if (pin == (PinName)NC) return; - obj->pin = pin; obj->mask = gpio_set(pin); unsigned int port = (unsigned int)pin >> PORT_SHIFT; @@ -42,9 +44,7 @@ void gpio_mode(gpio_t *obj, PinMode mode) { } void gpio_dir(gpio_t *obj, PinDirection direction) { - if (obj->pin == (PinName)NC) - return; - + assert(obj->pin != (PinName)NC); switch (direction) { case PIN_INPUT : *obj->reg_dir &= ~obj->mask; diff --git a/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_K20D5M/gpio_object.h b/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_K20D5M/gpio_object.h index cd9e6608f9..35923ebd1f 100644 --- a/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_K20D5M/gpio_object.h +++ b/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_K20D5M/gpio_object.h @@ -16,6 +16,8 @@ #ifndef MBED_GPIO_OBJECT_H #define MBED_GPIO_OBJECT_H +#include + #ifdef __cplusplus extern "C" { #endif @@ -31,8 +33,7 @@ typedef struct { } gpio_t; static inline void gpio_write(gpio_t *obj, int value) { - if (obj->pin == (PinName)NC) - return; + assert(obj->pin != (PinName)NC); if (value) { *obj->reg_set = obj->mask; } else { @@ -41,8 +42,7 @@ static inline void gpio_write(gpio_t *obj, int value) { } static inline int gpio_read(gpio_t *obj) { - if (obj->pin == (PinName)NC) - return 0; + assert(obj->pin != (PinName)NC); return ((*obj->reg_in & obj->mask) ? 1 : 0); } diff --git a/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_K20D5M/pinmap.c b/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_K20D5M/pinmap.c index 9adef24d09..a7a0be9297 100644 --- a/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_K20D5M/pinmap.c +++ b/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_K20D5M/pinmap.c @@ -13,12 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include #include "pinmap.h" -#include "error.h" void pin_function(PinName pin, int function) { - if (pin == (PinName)NC) - return; + assert(pin != (PinName)NC); uint32_t port_n = (uint32_t)pin >> PORT_SHIFT; uint32_t pin_n = (uint32_t)(pin & 0x7C) >> 2; @@ -31,8 +30,7 @@ void pin_function(PinName pin, int function) { } void pin_mode(PinName pin, PinMode mode) { - if (pin == (PinName)NC) { return; } - + assert(pin != (PinName)NC); __IO uint32_t* pin_pcr = (__IO uint32_t*)(PORTA_BASE + pin); // pin pullup bits: [1:0] -> 11 = (0x3) diff --git a/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KLXX/gpio_api.c b/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KLXX/gpio_api.c index bdcb54cbcc..add01e1216 100644 --- a/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KLXX/gpio_api.c +++ b/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KLXX/gpio_api.c @@ -13,19 +13,21 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include #include "gpio_api.h" #include "pinmap.h" uint32_t gpio_set(PinName pin) { + assert(pin != (PinName)NC); pin_function(pin, 1); return 1 << ((pin & 0x7F) >> 2); } void gpio_init(gpio_t *obj, PinName pin) { + obj->pin = pin; if (pin == (PinName)NC) return; - obj->pin = pin; obj->mask = gpio_set(pin); unsigned int port = (unsigned int)pin >> PORT_SHIFT; @@ -42,9 +44,7 @@ void gpio_mode(gpio_t *obj, PinMode mode) { } void gpio_dir(gpio_t *obj, PinDirection direction) { - if (obj->pin == (PinName)NC) - return; - + assert(obj->pin != (PinName)NC); switch (direction) { case PIN_INPUT : *obj->reg_dir &= ~obj->mask; diff --git a/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KLXX/gpio_object.h b/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KLXX/gpio_object.h index bde8b15256..e6bb82e4d4 100644 --- a/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KLXX/gpio_object.h +++ b/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KLXX/gpio_object.h @@ -16,6 +16,8 @@ #ifndef MBED_GPIO_OBJECT_H #define MBED_GPIO_OBJECT_H +#include + #ifdef __cplusplus extern "C" { #endif @@ -31,8 +33,7 @@ typedef struct { } gpio_t; static inline void gpio_write(gpio_t *obj, int value) { - if (obj->pin == (PinName)NC) - return; + assert(obj->pin != (PinName)NC); if (value) *obj->reg_set = obj->mask; else @@ -40,8 +41,7 @@ static inline void gpio_write(gpio_t *obj, int value) { } static inline int gpio_read(gpio_t *obj) { - if (obj->pin == (PinName)NC) - return 0; + assert(obj->pin != (PinName)NC); return ((*obj->reg_in & obj->mask) ? 1 : 0); } diff --git a/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KLXX/pinmap.c b/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KLXX/pinmap.c index 9efe64843d..36ff078d93 100644 --- a/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KLXX/pinmap.c +++ b/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KLXX/pinmap.c @@ -13,12 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include #include "pinmap.h" -#include "error.h" void pin_function(PinName pin, int function) { - if (pin == (PinName)NC) - return; + assert(pin != (PinName)NC); uint32_t port_n = (uint32_t)pin >> PORT_SHIFT; uint32_t pin_n = (uint32_t)(pin & 0x7C) >> 2; @@ -31,8 +30,7 @@ void pin_function(PinName pin, int function) { } void pin_mode(PinName pin, PinMode mode) { - if (pin == (PinName)NC) - return; + assert(pin != (PinName)NC); __IO uint32_t* pin_pcr = (__IO uint32_t*)(PORTA_BASE + pin); diff --git a/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/gpio_api.c b/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/gpio_api.c index e9fa1fa86d..909bd6198d 100644 --- a/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/gpio_api.c +++ b/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/gpio_api.c @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include #include "gpio_api.h" #include "pinmap.h" #include "fsl_port_hal.h" @@ -20,6 +21,7 @@ #include "fsl_sim_hal.h" uint32_t gpio_set(PinName pin) { + assert(pin != (PinName)NC); uint32_t pin_num = pin & 0xFF; pin_function(pin, (int)kPortMuxAsGpio); @@ -27,10 +29,10 @@ uint32_t gpio_set(PinName pin) { } void gpio_init(gpio_t *obj, PinName pin) { + obj->pinName = pin; if (pin == (PinName)NC) return; - obj->pinName = pin; uint32_t port = pin >> GPIO_PORT_SHIFT; uint32_t pin_num = pin & 0xFF; clock_hal_set_gate(kSimClockModulePORT, port, true); @@ -42,8 +44,7 @@ void gpio_mode(gpio_t *obj, PinMode mode) { } void gpio_dir(gpio_t *obj, PinDirection direction) { - if (obj->pin == (PinName)NC) - return; + assert(obj->pinName != (PinName)NC); uint32_t port = obj->pinName >> GPIO_PORT_SHIFT; uint32_t pin_num = obj->pinName & 0xFF; diff --git a/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/gpio_object.h b/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/gpio_object.h index 6a5189040a..94db08ea1e 100644 --- a/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/gpio_object.h +++ b/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/gpio_object.h @@ -16,6 +16,7 @@ #ifndef MBED_GPIO_OBJECT_H #define MBED_GPIO_OBJECT_H +#include #include "fsl_gpio_hal.h" #ifdef __cplusplus @@ -27,8 +28,7 @@ typedef struct { } gpio_t; static inline void gpio_write(gpio_t *obj, int value) { - if (obj->pin == (PinName)NC) - return; + assert(obj->pinName != (PinName)NC); uint32_t port = obj->pinName >> GPIO_PORT_SHIFT; uint32_t pin = obj->pinName & 0xFF; @@ -36,8 +36,7 @@ static inline void gpio_write(gpio_t *obj, int value) { } static inline int gpio_read(gpio_t *obj) { - if (obj->pin == (PinName)NC) - return 0; + assert(obj->pinName != (PinName)NC); uint32_t port = obj->pinName >> GPIO_PORT_SHIFT; uint32_t pin = obj->pinName & 0xFF; diff --git a/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/pinmap.c b/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/pinmap.c index f03db67a9f..db0b212baf 100644 --- a/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/pinmap.c +++ b/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/pinmap.c @@ -13,25 +13,20 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include #include "pinmap.h" #include "error.h" #include "fsl_clock_manager.h" #include "fsl_port_hal.h" void pin_function(PinName pin, int function) { - if (pin == (PinName)NC) { - return; - } - + assert(pin != (PinName)NC); clock_manager_set_gate(kClockModulePORT, pin >> GPIO_PORT_SHIFT, true); port_hal_mux_control(pin >> GPIO_PORT_SHIFT, pin & 0xFF, (port_mux_t)function); } void pin_mode(PinName pin, PinMode mode) { - if (pin == (PinName)NC) { - return; - } - + assert(pin != (PinName)NC); uint32_t instance = pin >> GPIO_PORT_SHIFT; uint32_t pinName = pin & 0xFF; diff --git a/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_NRF51822/gpio_api.c b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_NRF51822/gpio_api.c index b79bd6eb2b..82bece68fd 100644 --- a/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_NRF51822/gpio_api.c +++ b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_NRF51822/gpio_api.c @@ -13,14 +13,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include #include "gpio_api.h" #include "pinmap.h" void gpio_init(gpio_t *obj, PinName pin) { - if(pin == (PinName)NC) + obj->pin = pin; + if (pin == (PinName)NC) return; - obj->pin = pin; obj->mask = (1ul << pin); obj->reg_set = &NRF_GPIO->OUTSET; @@ -34,22 +35,21 @@ void gpio_mode(gpio_t *obj, PinMode mode) { } void gpio_dir(gpio_t *obj, PinDirection direction) { - if (obj->pin == (PinName)NC) - return; + assert(obj->pin != (PinName)NC); switch (direction) { case PIN_INPUT : - NRF_GPIO->PIN_CNF[obj->pin] = (GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos) + NRF_GPIO->PIN_CNF[obj->pin] = (GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos) | (GPIO_PIN_CNF_DRIVE_S0S1 << GPIO_PIN_CNF_DRIVE_Pos) | (GPIO_PIN_CNF_INPUT_Connect << GPIO_PIN_CNF_INPUT_Pos) | (GPIO_PIN_CNF_DIR_Input << GPIO_PIN_CNF_DIR_Pos); - break; + break; case PIN_OUTPUT: - NRF_GPIO->PIN_CNF[obj->pin] = (GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos) + NRF_GPIO->PIN_CNF[obj->pin] = (GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos) | (GPIO_PIN_CNF_DRIVE_S0S1 << GPIO_PIN_CNF_DRIVE_Pos) | (GPIO_PIN_CNF_PULL_Disabled << GPIO_PIN_CNF_PULL_Pos) | (GPIO_PIN_CNF_INPUT_Connect << GPIO_PIN_CNF_INPUT_Pos) | (GPIO_PIN_CNF_DIR_Output << GPIO_PIN_CNF_DIR_Pos); - break; + break; } } diff --git a/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_NRF51822/gpio_object.h b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_NRF51822/gpio_object.h index bde8b15256..e6bb82e4d4 100644 --- a/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_NRF51822/gpio_object.h +++ b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_NRF51822/gpio_object.h @@ -16,6 +16,8 @@ #ifndef MBED_GPIO_OBJECT_H #define MBED_GPIO_OBJECT_H +#include + #ifdef __cplusplus extern "C" { #endif @@ -31,8 +33,7 @@ typedef struct { } gpio_t; static inline void gpio_write(gpio_t *obj, int value) { - if (obj->pin == (PinName)NC) - return; + assert(obj->pin != (PinName)NC); if (value) *obj->reg_set = obj->mask; else @@ -40,8 +41,7 @@ static inline void gpio_write(gpio_t *obj, int value) { } static inline int gpio_read(gpio_t *obj) { - if (obj->pin == (PinName)NC) - return 0; + assert(obj->pin != (PinName)NC); return ((*obj->reg_in & obj->mask) ? 1 : 0); } diff --git a/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_NRF51822/pinmap.c b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_NRF51822/pinmap.c index 2c63ac2fa3..3a9eb37545 100644 --- a/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_NRF51822/pinmap.c +++ b/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_NRF51822/pinmap.c @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include #include "pinmap.h" #include "error.h" @@ -20,10 +21,10 @@ void pin_function(PinName pin, int function) { } void pin_mode(PinName pin, PinMode mode) { - if (pin == (PinName)NC) { return; } + assert(pin != (PinName)NC); uint32_t pin_number = (uint32_t)pin; NRF_GPIO->PIN_CNF[pin_number] &= ~GPIO_PIN_CNF_PULL_Msk; - NRF_GPIO->PIN_CNF[pin_number] |= (mode<PIN_CNF[pin_number] |= (mode << GPIO_PIN_CNF_PULL_Pos); } diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11U6X/gpio_api.c b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11U6X/gpio_api.c index 89003d7dc4..0361f2b99f 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11U6X/gpio_api.c +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11U6X/gpio_api.c @@ -13,20 +13,22 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include #include "gpio_api.h" #include "pinmap.h" uint32_t gpio_set(PinName pin) { + assert(pin != (PinName)NC); /* Enable AHB clock to the GPIO and IOCON domain. */ LPC_SYSCON->SYSAHBCLKCTRL |= ((1 << 16) | (1 << 6)); return (1UL << ((int)pin >> PIN_SHIFT & 0x1F)); } void gpio_init(gpio_t *obj, PinName pin) { + obj->pin = pin; if (pin == (PinName)NC) return; - obj->pin = pin; obj->mask = gpio_set(pin); unsigned int port = (unsigned int)(pin >> PORT_SHIFT); @@ -42,9 +44,7 @@ void gpio_mode(gpio_t *obj, PinMode mode) { } void gpio_dir(gpio_t *obj, PinDirection direction) { - if (obj->pin == (PinName)NC) - return; - + assert(obj->pin != (PinName)NC); switch (direction) { case PIN_INPUT : *obj->reg_dir &= ~obj->mask; diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11U6X/gpio_object.h b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11U6X/gpio_object.h index f458edb9b5..e6bb82e4d4 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11U6X/gpio_object.h +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11U6X/gpio_object.h @@ -16,6 +16,8 @@ #ifndef MBED_GPIO_OBJECT_H #define MBED_GPIO_OBJECT_H +#include + #ifdef __cplusplus extern "C" { #endif @@ -31,9 +33,7 @@ typedef struct { } gpio_t; static inline void gpio_write(gpio_t *obj, int value) { - if (obj->pin == (PinName)NC) - return; - + assert(obj->pin != (PinName)NC); if (value) *obj->reg_set = obj->mask; else @@ -41,8 +41,7 @@ static inline void gpio_write(gpio_t *obj, int value) { } static inline int gpio_read(gpio_t *obj) { - if (obj->pin == (PinName)NC) - return 0; + assert(obj->pin != (PinName)NC); return ((*obj->reg_in & obj->mask) ? 1 : 0); } diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11U6X/pinmap.c b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11U6X/pinmap.c index d6628be206..8142396fc0 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11U6X/pinmap.c +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11U6X/pinmap.c @@ -13,15 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include #include "pinmap.h" #include "error.h" void pin_function(PinName pin, int function) { - if (pin == (uint32_t)NC) - { - return; - } - + assert(pin != (PinName)NC); __IO uint32_t *reg = (__IO uint32_t*)(LPC_IOCON_BASE + (pin & 0x1FF)); // pin function bits: [2:0] -> 111 = (0x7) @@ -29,11 +26,7 @@ void pin_function(PinName pin, int function) { } void pin_mode(PinName pin, PinMode mode) { - if (pin == (uint32_t)NC) - { - return; - } - + assert(pin != (PinName)NC); if ((pin == P0_4) || (pin == P0_5)) { // The true open-drain pins PIO0_4 and PIO0_5 can be configured for different I2C-bus speeds. return; diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/gpio_api.c b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/gpio_api.c index 0026dfe4ca..00ae42d82a 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/gpio_api.c +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/gpio_api.c @@ -13,10 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include #include "gpio_api.h" #include "pinmap.h" uint32_t gpio_set(PinName pin) { + assert(pin != (PinName)NC); int f = ((pin == P0_11) || (pin == P0_12) || (pin == P0_13) || (pin == P0_14)) ? (1) : (0); pin_function(pin, f); @@ -25,10 +27,10 @@ uint32_t gpio_set(PinName pin) { } void gpio_init(gpio_t *obj, PinName pin) { + obj->pin = pin; if (pin == (PinName)NC) return; - obj->pin = pin; obj->mask = gpio_set(pin); unsigned int port = (unsigned int)pin >> PORT_SHIFT; @@ -44,9 +46,7 @@ void gpio_mode(gpio_t *obj, PinMode mode) { } void gpio_dir(gpio_t *obj, PinDirection direction) { - if (obj->pin == (PinName)NC) - return; - + assert(obj->pin != (PinName)NC); switch (direction) { case PIN_INPUT : *obj->reg_dir &= ~obj->mask; diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/gpio_object.h b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/gpio_object.h index afef5d0f46..e6bb82e4d4 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/gpio_object.h +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/gpio_object.h @@ -16,6 +16,8 @@ #ifndef MBED_GPIO_OBJECT_H #define MBED_GPIO_OBJECT_H +#include + #ifdef __cplusplus extern "C" { #endif @@ -31,9 +33,7 @@ typedef struct { } gpio_t; static inline void gpio_write(gpio_t *obj, int value) { - if (pin == (PinName)NC) - return; - + assert(obj->pin != (PinName)NC); if (value) *obj->reg_set = obj->mask; else @@ -41,9 +41,7 @@ static inline void gpio_write(gpio_t *obj, int value) { } static inline int gpio_read(gpio_t *obj) { - if (pin == (PinName)NC) - return 0; - + assert(obj->pin != (PinName)NC); return ((*obj->reg_in & obj->mask) ? 1 : 0); } diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/pinmap.c b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/pinmap.c index d7a157a1df..c431a9a12e 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/pinmap.c +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/pinmap.c @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include #include "pinmap.h" #include "error.h" @@ -20,27 +21,27 @@ #define LPC_IOCON1_BASE (LPC_IOCON_BASE + 0x60) void pin_function(PinName pin, int function) { + assert(pin != (PinName)NC); if (pin == (PinName)NC) return; uint32_t pin_number = (uint32_t)pin; __IO uint32_t *reg = (pin_number < 32) ? - (__IO uint32_t*)(LPC_IOCON0_BASE + 4 * pin_number) : - (__IO uint32_t*)(LPC_IOCON1_BASE + 4 * (pin_number - 32)); + (__IO uint32_t*)(LPC_IOCON0_BASE + 4 * pin_number) : + (__IO uint32_t*)(LPC_IOCON1_BASE + 4 * (pin_number - 32)); // pin function bits: [2:0] -> 111 = (0x7) *reg = (*reg & ~0x7) | (function & 0x7); } void pin_mode(PinName pin, PinMode mode) { - if (pin == (PinName)NC) { return; } - + assert(pin != (PinName)NC); uint32_t pin_number = (uint32_t)pin; uint32_t drain = ((uint32_t) mode & (uint32_t) OpenDrain) >> 2; __IO uint32_t *reg = (pin_number < 32) ? - (__IO uint32_t*)(LPC_IOCON0_BASE + 4 * pin_number) : - (__IO uint32_t*)(LPC_IOCON1_BASE + 4 * (pin_number - 32)); + (__IO uint32_t*)(LPC_IOCON0_BASE + 4 * pin_number) : + (__IO uint32_t*)(LPC_IOCON1_BASE + 4 * (pin_number - 32)); uint32_t tmp = *reg; // pin mode bits: [4:3] -> 11000 = (0x3 << 3) diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11XX_11CXX/gpio_api.c b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11XX_11CXX/gpio_api.c index f91ae52f8e..b695978ea1 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11XX_11CXX/gpio_api.c +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11XX_11CXX/gpio_api.c @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include #include "gpio_api.h" #include "pinmap.h" #include "reserved_pins.h" @@ -20,25 +21,26 @@ static const PinName reserved_pins[] = TARGET_RESERVED_PINS; uint32_t gpio_set(PinName pin) { + assert(pin != (PinName)NC); // PIO default value of following ports are not same as others unsigned i; int f = 0; - for (i = 0; i < sizeof(reserved_pins) / sizeof(PinName); i ++) + for (i = 0; i < sizeof(reserved_pins) / sizeof(PinName); i ++) { if (pin == reserved_pins[i]) { f = 1; break; } - + } pin_function(pin, f); return ((pin & 0x0F00) >> 8); } void gpio_init(gpio_t *obj, PinName pin) { + obj->pin = pin; if (pin == (PinName)NC) return; - obj->pin = pin; LPC_GPIO_TypeDef *port_reg = ((LPC_GPIO_TypeDef *) (LPC_GPIO0_BASE + (((pin & 0xF000) >> PORT_SHIFT) * 0x10000))); obj->reg_mask_read = &port_reg->MASKED_ACCESS[1 << gpio_set(pin)]; @@ -51,12 +53,14 @@ void gpio_mode(gpio_t *obj, PinMode mode) { } void gpio_dir(gpio_t *obj, PinDirection direction) { - if (obj->pin == (PinName)NC) - return; - + assert(obj->pin != (PinName)NC); int pin_number = ((obj->pin & 0x0F00) >> 8); switch (direction) { - case PIN_INPUT : *obj->reg_dir &= ~(1 << pin_number); break; - case PIN_OUTPUT: *obj->reg_dir |= (1 << pin_number); break; + case PIN_INPUT : + *obj->reg_dir &= ~(1 << pin_number); + break; + case PIN_OUTPUT: + *obj->reg_dir |= (1 << pin_number); + break; } } diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11XX_11CXX/gpio_object.h b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11XX_11CXX/gpio_object.h index ccac8dce10..71a8ce10e2 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11XX_11CXX/gpio_object.h +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11XX_11CXX/gpio_object.h @@ -16,6 +16,8 @@ #ifndef MBED_GPIO_OBJECT_H #define MBED_GPIO_OBJECT_H +#include + #ifdef __cplusplus extern "C" { #endif @@ -28,8 +30,7 @@ typedef struct { } gpio_t; static inline void gpio_write(gpio_t *obj, int value) { - if (obj->pin == (PinName)NC) - return; + assert(obj->pin != (PinName)NC); uint32_t pin_number = ((obj->pin & 0x0F00) >> 8); if (value) *obj->reg_write |= (1 << pin_number); @@ -38,8 +39,7 @@ static inline void gpio_write(gpio_t *obj, int value) { } static inline int gpio_read(gpio_t *obj) { - if (obj->pin == (PinName)NC) - return; + assert(obj->pin != (PinName)NC); return ((*obj->reg_mask_read) ? 1 : 0); } diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11XX_11CXX/pinmap.c b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11XX_11CXX/pinmap.c index 8006ca18f1..a20eba6e02 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11XX_11CXX/pinmap.c +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11XX_11CXX/pinmap.c @@ -13,12 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include #include "pinmap.h" #include "error.h" void pin_function(PinName pin, int function) { - if (pin == (uint32_t)NC) return; - + assert(pin != (PinName)NC); uint32_t offset = (uint32_t)pin & 0xff; __IO uint32_t *reg = (__IO uint32_t*)(LPC_IOCON_BASE + offset); @@ -27,10 +27,9 @@ void pin_function(PinName pin, int function) { } void pin_mode(PinName pin, PinMode mode) { - if (pin == (uint32_t)NC) { return; } - + assert(pin != (PinName)NC); uint32_t offset = (uint32_t)pin & 0xff; - uint32_t drain = ((uint32_t) mode & (uint32_t) OpenDrain) >> 2; + uint32_t drain = ((uint32_t)mode & (uint32_t)OpenDrain) >> 2; __IO uint32_t *reg = (__IO uint32_t*)(LPC_IOCON_BASE + offset); uint32_t tmp = *reg; diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC13XX/gpio_api.c b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC13XX/gpio_api.c index acdd9aceab..09f67a6cb2 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC13XX/gpio_api.c +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC13XX/gpio_api.c @@ -13,10 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include #include "gpio_api.h" #include "pinmap.h" uint32_t gpio_set(PinName pin) { + assert(pin != (PinName)NC); int f = ((pin == P0_11) || (pin == P0_12) || (pin == P0_13) || (pin == P0_14)) ? (1) : (0); pin_function(pin, f); @@ -25,10 +27,10 @@ uint32_t gpio_set(PinName pin) { } void gpio_init(gpio_t *obj, PinName pin) { + obj->pin = pin; if (pin == (PinName)NC) return; - obj->pin = pin; obj->mask = gpio_set(pin); unsigned int port = (unsigned int)pin >> PORT_SHIFT; @@ -44,10 +46,13 @@ void gpio_mode(gpio_t *obj, PinMode mode) { } void gpio_dir(gpio_t *obj, PinDirection direction) { - if (obj->pin == (PinName)NC) - return; + assert(obj->pin != (PinName)NC); switch (direction) { - case PIN_INPUT : *obj->reg_dir &= ~obj->mask; break; - case PIN_OUTPUT: *obj->reg_dir |= obj->mask; break; + case PIN_INPUT : + *obj->reg_dir &= ~obj->mask; + break; + case PIN_OUTPUT: + *obj->reg_dir |= obj->mask; + break; } } diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC13XX/gpio_object.h b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC13XX/gpio_object.h index bde8b15256..e6bb82e4d4 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC13XX/gpio_object.h +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC13XX/gpio_object.h @@ -16,6 +16,8 @@ #ifndef MBED_GPIO_OBJECT_H #define MBED_GPIO_OBJECT_H +#include + #ifdef __cplusplus extern "C" { #endif @@ -31,8 +33,7 @@ typedef struct { } gpio_t; static inline void gpio_write(gpio_t *obj, int value) { - if (obj->pin == (PinName)NC) - return; + assert(obj->pin != (PinName)NC); if (value) *obj->reg_set = obj->mask; else @@ -40,8 +41,7 @@ static inline void gpio_write(gpio_t *obj, int value) { } static inline int gpio_read(gpio_t *obj) { - if (obj->pin == (PinName)NC) - return 0; + assert(obj->pin != (PinName)NC); return ((*obj->reg_in & obj->mask) ? 1 : 0); } diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC13XX/pinmap.c b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC13XX/pinmap.c index 4e2445c658..c28c675938 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC13XX/pinmap.c +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC13XX/pinmap.c @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include #include "pinmap.h" #include "error.h" @@ -20,7 +21,7 @@ #define LPC_IOCON1_BASE (LPC_IOCON_BASE + 0x60) void pin_function(PinName pin, int function) { - if (pin == (uint32_t)NC) return; + assert(pin != (PinName)NC); uint32_t pin_number = (uint32_t)pin; @@ -33,7 +34,7 @@ void pin_function(PinName pin, int function) { } void pin_mode(PinName pin, PinMode mode) { - if (pin == (uint32_t)NC) { return; } + assert(pin != (PinName)NC); uint32_t pin_number = (uint32_t)pin; uint32_t drain = ((uint32_t) mode & (uint32_t) OpenDrain) >> 2; diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC15XX/gpio_api.c b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC15XX/gpio_api.c index 6e7a378444..94479a4359 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC15XX/gpio_api.c +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC15XX/gpio_api.c @@ -13,19 +13,21 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include #include "gpio_api.h" #include "pinmap.h" uint32_t gpio_set(PinName pin) { + assert(pin != (PinName)NC); LPC_SYSCON->SYSAHBCLKCTRL0 |= (0xFUL << 13); return (1UL << ((int)pin & 0x1f)); } void gpio_init(gpio_t *obj, PinName pin) { + obj->pin = pin; if (pin == (PinName)NC) return; - obj->pin = pin; obj->mask = gpio_set(pin); unsigned int port = (unsigned int)(pin >> 5); @@ -41,9 +43,7 @@ void gpio_mode(gpio_t *obj, PinMode mode) { } void gpio_dir(gpio_t *obj, PinDirection direction) { - if (obj->pin == (PinName)NC) - return; - + assert(pin != (PinName)NC); switch (direction) { case PIN_INPUT : *obj->reg_dir &= ~obj->mask; diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC15XX/gpio_object.h b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC15XX/gpio_object.h index f458edb9b5..b0eabec850 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC15XX/gpio_object.h +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC15XX/gpio_object.h @@ -16,6 +16,8 @@ #ifndef MBED_GPIO_OBJECT_H #define MBED_GPIO_OBJECT_H +#include + #ifdef __cplusplus extern "C" { #endif @@ -31,8 +33,7 @@ typedef struct { } gpio_t; static inline void gpio_write(gpio_t *obj, int value) { - if (obj->pin == (PinName)NC) - return; + assert(obj->pin != (PinName)NC); if (value) *obj->reg_set = obj->mask; @@ -41,8 +42,7 @@ static inline void gpio_write(gpio_t *obj, int value) { } static inline int gpio_read(gpio_t *obj) { - if (obj->pin == (PinName)NC) - return 0; + assert(obj->pin != (PinName)NC); return ((*obj->reg_in & obj->mask) ? 1 : 0); } diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC15XX/pinmap.c b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC15XX/pinmap.c index d39c6912dc..5592282829 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC15XX/pinmap.c +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC15XX/pinmap.c @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include #include "pinmap.h" #include "error.h" @@ -20,7 +21,7 @@ void pin_function(PinName pin, int function) { } void pin_mode(PinName pin, PinMode mode) { - if (pin == (uint32_t)NC) { return; } + assert(pin != (PinName)NC); if ((pin == P0_22) || (pin == P0_23)) { // The true open-drain pins PIO0_22 and PIO0_23 can be configured for different I2C-bus speeds. diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/gpio_api.c b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/gpio_api.c index 5bbfca3778..dd34db71da 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/gpio_api.c +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/gpio_api.c @@ -13,21 +13,23 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include #include "gpio_api.h" #include "pinmap.h" uint32_t gpio_set(PinName pin) { + assert(pin != (PinName)NC); pin_function(pin, 0); return (1 << ((int)pin & 0x1F)); } void gpio_init(gpio_t *obj, PinName pin) { + obj->pin = pin; if (pin == (PinName)NC) return; - obj->pin = pin; + obj->mask = gpio_set(pin); - - LPC_GPIO_TypeDef *port_reg = (LPC_GPIO_TypeDef *) ((int)pin & ~0x1F); + LPC_GPIO_TypeDef *port_reg = (LPC_GPIO_TypeDef *)((int)pin & ~0x1F); obj->reg_set = &port_reg->FIOSET; obj->reg_clr = &port_reg->FIOCLR; obj->reg_in = &port_reg->FIOPIN; @@ -39,10 +41,13 @@ void gpio_mode(gpio_t *obj, PinMode mode) { } void gpio_dir(gpio_t *obj, PinDirection direction) { - if (obj->pin == (PinName)NC) - return; + assert(obj->pin != (PinName)NC); switch (direction) { - case PIN_INPUT : *obj->reg_dir &= ~obj->mask; break; - case PIN_OUTPUT: *obj->reg_dir |= obj->mask; break; + case PIN_INPUT : + *obj->reg_dir &= ~obj->mask; + break; + case PIN_OUTPUT: + *obj->reg_dir |= obj->mask; + break; } } diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/gpio_object.h b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/gpio_object.h index bde8b15256..e6bb82e4d4 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/gpio_object.h +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/gpio_object.h @@ -16,6 +16,8 @@ #ifndef MBED_GPIO_OBJECT_H #define MBED_GPIO_OBJECT_H +#include + #ifdef __cplusplus extern "C" { #endif @@ -31,8 +33,7 @@ typedef struct { } gpio_t; static inline void gpio_write(gpio_t *obj, int value) { - if (obj->pin == (PinName)NC) - return; + assert(obj->pin != (PinName)NC); if (value) *obj->reg_set = obj->mask; else @@ -40,8 +41,7 @@ static inline void gpio_write(gpio_t *obj, int value) { } static inline int gpio_read(gpio_t *obj) { - if (obj->pin == (PinName)NC) - return 0; + assert(obj->pin != (PinName)NC); return ((*obj->reg_in & obj->mask) ? 1 : 0); } diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/pinmap.c b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/pinmap.c index be017ce181..1600a5fe5d 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/pinmap.c +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/pinmap.c @@ -13,12 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include #include "pinmap.h" #include "error.h" void pin_function(PinName pin, int function) { - if (pin == (PinName)NC) return; - + assert(pin != (PinName)NC); + uint32_t pin_number = (uint32_t)pin - (uint32_t)P0_0; int index = pin_number >> 4; int offset = (pin_number & 0xF) << 1; @@ -28,7 +29,7 @@ void pin_function(PinName pin, int function) { } void pin_mode(PinName pin, PinMode mode) { - if (pin == (PinName)NC) { return; } + assert(pin != (PinName)NC); uint32_t pin_number = (uint32_t)pin - (uint32_t)P0_0; int index = pin_number >> 5; diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC23XX/gpio_api.c b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC23XX/gpio_api.c index 1e9ef6e99c..ada9c74615 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC23XX/gpio_api.c +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC23XX/gpio_api.c @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include #include "gpio_api.h" #include "pinmap.h" diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC23XX/gpio_object.h b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC23XX/gpio_object.h index bde8b15256..e6bb82e4d4 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC23XX/gpio_object.h +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC23XX/gpio_object.h @@ -16,6 +16,8 @@ #ifndef MBED_GPIO_OBJECT_H #define MBED_GPIO_OBJECT_H +#include + #ifdef __cplusplus extern "C" { #endif @@ -31,8 +33,7 @@ typedef struct { } gpio_t; static inline void gpio_write(gpio_t *obj, int value) { - if (obj->pin == (PinName)NC) - return; + assert(obj->pin != (PinName)NC); if (value) *obj->reg_set = obj->mask; else @@ -40,8 +41,7 @@ static inline void gpio_write(gpio_t *obj, int value) { } static inline int gpio_read(gpio_t *obj) { - if (obj->pin == (PinName)NC) - return 0; + assert(obj->pin != (PinName)NC); return ((*obj->reg_in & obj->mask) ? 1 : 0); } diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC23XX/pinmap.c b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC23XX/pinmap.c index 84173661c9..ef1ed3752c 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC23XX/pinmap.c +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC23XX/pinmap.c @@ -13,11 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include #include "pinmap.h" #include "error.h" void pin_function(PinName pin, int function) { - if (pin == (PinName)NC) return; + assert(pin != (PinName)NC); uint32_t pin_number = (uint32_t)pin - (uint32_t)P0_0; int index = pin_number >> 4; @@ -28,15 +29,13 @@ void pin_function(PinName pin, int function) { } void pin_mode(PinName pin, PinMode mode) { - if (pin == (PinName)NC) { return; } - + assert((pin != (PinName)NC) && (mode != OpenDrain)); + uint32_t pin_number = (uint32_t)pin - (uint32_t)P0_0; int index = pin_number >> 5; int offset = pin_number & 0x1F; uint32_t drain = ((uint32_t) mode & (uint32_t) OpenDrain) >> 2; - - if (mode == OpenDrain) error("OpenDrain not supported on LPC2368"); - + if (!drain) { index = pin_number >> 4; offset = (pin_number & 0xF) << 1; diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC408X/gpio_api.c b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC408X/gpio_api.c index 1b79dbdbf4..012b5b256b 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC408X/gpio_api.c +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC408X/gpio_api.c @@ -13,19 +13,21 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include #include "gpio_api.h" #include "pinmap.h" uint32_t gpio_set(PinName pin) { + assert(pin != (PinName)NC); pin_function(pin, 0); return (1 << ((int)pin & 0x1F)); } void gpio_init(gpio_t *obj, PinName pin) { + obj->pin = pin; if (pin == (PinName)NC) return; - obj->pin = pin; obj->mask = gpio_set(pin); LPC_GPIO_TypeDef *port_reg = (LPC_GPIO_TypeDef *) ((int)(LPC_GPIO0_BASE+pin) & ~0x1F); @@ -41,8 +43,7 @@ void gpio_mode(gpio_t *obj, PinMode mode) { } void gpio_dir(gpio_t *obj, PinDirection direction) { - if (obj->pin == (PinName)NC) - return; + assert(obj->pin != (PinName)NC); switch (direction) { case PIN_INPUT : diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC408X/gpio_object.h b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC408X/gpio_object.h index f458edb9b5..e6bb82e4d4 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC408X/gpio_object.h +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC408X/gpio_object.h @@ -16,6 +16,8 @@ #ifndef MBED_GPIO_OBJECT_H #define MBED_GPIO_OBJECT_H +#include + #ifdef __cplusplus extern "C" { #endif @@ -31,9 +33,7 @@ typedef struct { } gpio_t; static inline void gpio_write(gpio_t *obj, int value) { - if (obj->pin == (PinName)NC) - return; - + assert(obj->pin != (PinName)NC); if (value) *obj->reg_set = obj->mask; else @@ -41,8 +41,7 @@ static inline void gpio_write(gpio_t *obj, int value) { } static inline int gpio_read(gpio_t *obj) { - if (obj->pin == (PinName)NC) - return 0; + assert(obj->pin != (PinName)NC); return ((*obj->reg_in & obj->mask) ? 1 : 0); } diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC408X/pinmap.c b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC408X/pinmap.c index d2e277ba9e..6b3a49defb 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC408X/pinmap.c +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC408X/pinmap.c @@ -13,12 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include #include "pinmap.h" #include "error.h" void pin_function(PinName pin, int function) { - if (pin == (PinName)NC) return; - + assert(pin != (PinName)NC); __IO uint32_t *reg = (__IO uint32_t*) (LPC_IOCON_BASE + 4 * pin); // pin function bits: [2:0] -> 111 = (0x7) @@ -26,7 +26,7 @@ void pin_function(PinName pin, int function) { } void pin_mode(PinName pin, PinMode mode) { - if (pin == (PinName)NC) { return; } + assert(pin != (PinName)NC); uint32_t drain = ((uint32_t) mode & (uint32_t) OpenDrain) >> 2; diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC43XX/gpio_api.c b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC43XX/gpio_api.c index 8ec9895b14..c2706befd9 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC43XX/gpio_api.c +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC43XX/gpio_api.c @@ -15,10 +15,12 @@ * * Ported to NXP LPC43XX by Micromint USA */ +#include #include "gpio_api.h" #include "pinmap.h" uint32_t gpio_set(PinName pin) { + assert(pin != (PinName)NC); int f = 0; unsigned int port = (unsigned int)MBED_GPIO_PORT(pin); @@ -29,10 +31,10 @@ uint32_t gpio_set(PinName pin) { } void gpio_init(gpio_t *obj, PinName pin) { + obj->pin = pin; if (pin == (PinName)NC) return; - obj->pin = pin; obj->mask = gpio_set(pin); LPC_GPIO_T *port_reg = (LPC_GPIO_T *) (LPC_GPIO_PORT_BASE); @@ -49,11 +51,13 @@ void gpio_mode(gpio_t *obj, PinMode mode) { } void gpio_dir(gpio_t *obj, PinDirection direction) { - if (obj->pin == (PinName)NC) - return; - + assert(obj->pin != (PinName)NC); switch (direction) { - case PIN_INPUT : *obj->reg_dir &= ~obj->mask; break; - case PIN_OUTPUT: *obj->reg_dir |= obj->mask; break; + case PIN_INPUT : + *obj->reg_dir &= ~obj->mask; + break; + case PIN_OUTPUT: + *obj->reg_dir |= obj->mask; + break; } } diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC43XX/gpio_object.h b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC43XX/gpio_object.h index f458edb9b5..e6bb82e4d4 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC43XX/gpio_object.h +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC43XX/gpio_object.h @@ -16,6 +16,8 @@ #ifndef MBED_GPIO_OBJECT_H #define MBED_GPIO_OBJECT_H +#include + #ifdef __cplusplus extern "C" { #endif @@ -31,9 +33,7 @@ typedef struct { } gpio_t; static inline void gpio_write(gpio_t *obj, int value) { - if (obj->pin == (PinName)NC) - return; - + assert(obj->pin != (PinName)NC); if (value) *obj->reg_set = obj->mask; else @@ -41,8 +41,7 @@ static inline void gpio_write(gpio_t *obj, int value) { } static inline int gpio_read(gpio_t *obj) { - if (obj->pin == (PinName)NC) - return 0; + assert(obj->pin != (PinName)NC); return ((*obj->reg_in & obj->mask) ? 1 : 0); } diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC43XX/pinmap.c b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC43XX/pinmap.c index f55ec37505..14a04f27e8 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC43XX/pinmap.c +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC43XX/pinmap.c @@ -15,11 +15,12 @@ * * Ported to NXP LPC43XX by Micromint USA */ +#include #include "pinmap.h" #include "error.h" void pin_function(PinName pin, int function) { - if (pin == (uint32_t)NC) return; + assert(pin != (PinName)NC); __IO uint32_t *reg = (__IO uint32_t*) MBED_SCU_REG(pin); @@ -28,9 +29,7 @@ void pin_function(PinName pin, int function) { } void pin_mode(PinName pin, PinMode mode) { - if (pin == (uint32_t)NC) { return; } - - if (mode == OpenDrain) error("OpenDrain not supported on LPC43XX"); + assert((pin != (PinName)NC) && (mode == OpenDrain)); __IO uint32_t *reg = (__IO uint32_t*) MBED_SCU_REG(pin); uint32_t tmp = *reg; diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC81X/gpio_api.c b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC81X/gpio_api.c index 7abd786d68..06e311fe5e 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC81X/gpio_api.c +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC81X/gpio_api.c @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include #include "gpio_api.h" #include "pinmap.h" @@ -40,10 +41,10 @@ uint32_t gpio_set(PinName pin) { } void gpio_init(gpio_t *obj, PinName pin) { + obj->pin = pin; if (pin == (PinName)NC) return; - obj->pin = pin; obj->mask = gpio_set(pin); obj->reg_set = &LPC_GPIO_PORT->SET0; @@ -57,9 +58,7 @@ void gpio_mode(gpio_t *obj, PinMode mode) { } void gpio_dir(gpio_t *obj, PinDirection direction) { - if (obj->pin == (PinName)NC) - return; - + assert(obj->pin != (PinName)NC); switch (direction) { case PIN_INPUT : *obj->reg_dir &= ~obj->mask; diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC81X/gpio_object.h b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC81X/gpio_object.h index 0688da0ab9..e6bb82e4d4 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC81X/gpio_object.h +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC81X/gpio_object.h @@ -16,6 +16,8 @@ #ifndef MBED_GPIO_OBJECT_H #define MBED_GPIO_OBJECT_H +#include + #ifdef __cplusplus extern "C" { #endif @@ -31,9 +33,7 @@ typedef struct { } gpio_t; static inline void gpio_write(gpio_t *obj, int value) { - if (obj->pin == (PinName)NC) - return; - + assert(obj->pin != (PinName)NC); if (value) *obj->reg_set = obj->mask; else @@ -41,9 +41,7 @@ static inline void gpio_write(gpio_t *obj, int value) { } static inline int gpio_read(gpio_t *obj) { - if (obj->pin == (PinName)NC) - return 0; - + assert(obj->pin != (PinName)NC); return ((*obj->reg_in & obj->mask) ? 1 : 0); } diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC81X/pinmap.c b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC81X/pinmap.c index d8ac966d46..0a3c9be761 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC81X/pinmap.c +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC81X/pinmap.c @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include #include "pinmap.h" #include "error.h" @@ -30,8 +31,8 @@ void pin_function(PinName pin, int function) { } void pin_mode(PinName pin, PinMode mode) { - if (pin == (uint32_t)NC) { return; } - + assert(pin != (PinName)NC); + if ((pin == 10) || (pin == 11)) { // True open-drain pins can be configured for different I2C-bus speeds return; diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F051R8/gpio_api.c b/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F051R8/gpio_api.c index 24bd4d7866..bcaf274239 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F051R8/gpio_api.c +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F051R8/gpio_api.c @@ -27,6 +27,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************* */ +#include #include "gpio_api.h" #include "pinmap.h" #include "error.h" @@ -34,14 +35,14 @@ extern uint32_t Set_GPIO_Clock(uint32_t port_idx); uint32_t gpio_set(PinName pin) { - if (pin == (PinName)NC) - return 0; + assert(pin != (PinName)NC); pin_function(pin, STM_PIN_DATA(GPIO_Mode_IN, 0, GPIO_PuPd_NOPULL, 0xFF)); return (uint32_t)(1 << ((uint32_t)pin & 0xF)); // Return the pin mask } void gpio_init(gpio_t *obj, PinName pin) { + obj->pin = pin; if (pin == (PinName)NC) return; @@ -52,7 +53,6 @@ void gpio_init(gpio_t *obj, PinName pin) { GPIO_TypeDef *gpio = (GPIO_TypeDef *)gpio_add; // Fill GPIO object structure for future use - obj->pin = pin; obj->mask = gpio_set(pin); obj->reg_in = &gpio->IDR; obj->reg_set = &gpio->BSRR; @@ -64,6 +64,7 @@ void gpio_mode(gpio_t *obj, PinMode mode) { } void gpio_dir(gpio_t *obj, PinDirection direction) { + assert(obj->pin != (PinName)NC); if (direction == PIN_OUTPUT) { pin_function(obj->pin, STM_PIN_DATA(GPIO_Mode_OUT, GPIO_OType_PP, GPIO_PuPd_NOPULL, 0xFF)); } diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F051R8/gpio_object.h b/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F051R8/gpio_object.h index 627efff9d0..9a5b49c92a 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F051R8/gpio_object.h +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F051R8/gpio_object.h @@ -30,6 +30,7 @@ #ifndef MBED_GPIO_OBJECT_H #define MBED_GPIO_OBJECT_H +#include #include "cmsis.h" #include "PortNames.h" #include "PeripheralNames.h" @@ -48,9 +49,7 @@ typedef struct { } gpio_t; static inline void gpio_write(gpio_t *obj, int value) { - if (obj->pin == (PinName)NC) - return; - + assert(obj->pin != (PinName)NC); if (value) { *obj->reg_set = obj->mask; } @@ -60,8 +59,7 @@ static inline void gpio_write(gpio_t *obj, int value) { } static inline int gpio_read(gpio_t *obj) { - if (obj->pin == (PinName)NC) - return 0; + assert(obj->pin != (PinName)NC); return ((*obj->reg_in & obj->mask) ? 1 : 0); } diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F051R8/pinmap.c b/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F051R8/pinmap.c index 3f2812695e..cfe5388bdb 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F051R8/pinmap.c +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F051R8/pinmap.c @@ -27,6 +27,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************* */ +#include #include "device.h" #include "pinmap.h" #include "error.h" @@ -66,8 +67,7 @@ uint32_t Set_GPIO_Clock(uint32_t port_idx) { * Configure pin (mode, speed, output type and pull-up/pull-down) */ void pin_function(PinName pin, int data) { - if (pin == NC) return; - + assert(pin != (PinName)NC); // Get the pin informations uint32_t mode = STM_PIN_MODE(data); uint32_t otype = STM_PIN_OTYPE(data); @@ -104,15 +104,14 @@ void pin_function(PinName pin, int data) { //} //if ((pin == PA_15) || (pin == PB_3) || (pin == PB_4)) { // - //} + //} } /** * Configure pin pull-up/pull-down */ void pin_mode(PinName pin, PinMode mode) { - if (pin == NC) return; - + assert(pin != (PinName)NC); uint32_t port_index = STM_PORT(pin); uint32_t pin_index = STM_PIN(pin); @@ -122,7 +121,8 @@ void pin_mode(PinName pin, PinMode mode) { // Configure pull-up/pull-down resistors uint32_t pupd = (uint32_t)mode; - if (pupd > 2) pupd = 0; // Open-drain = No pull-up/No pull-down + if (pupd > 2) + pupd = 0; // Open-drain = No pull-up/No pull-down gpio->PUPDR &= (uint32_t)(~(GPIO_PUPDR_PUPDR0 << (pin_index * 2))); gpio->PUPDR |= (uint32_t)(pupd << (pin_index * 2)); diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F100RB/gpio_api.c b/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F100RB/gpio_api.c index a58e4faf6f..72ca82b0de 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F100RB/gpio_api.c +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F100RB/gpio_api.c @@ -27,6 +27,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************* */ +#include #include "gpio_api.h" #include "pinmap.h" #include "error.h" @@ -34,14 +35,14 @@ extern uint32_t Set_GPIO_Clock(uint32_t port_idx); uint32_t gpio_set(PinName pin) { - if (pin == (PinName)NC) - return 0; + assert(pin != (PinName)NC); pin_function(pin, STM_PIN_DATA(GPIO_Mode_IN_FLOATING, 0)); return (uint32_t)(1 << ((uint32_t)pin & 0xF)); // Return the pin mask } void gpio_init(gpio_t *obj, PinName pin) { + obj->pin = pin; if (pin == (PinName)NC) return; @@ -52,7 +53,6 @@ void gpio_init(gpio_t *obj, PinName pin) { GPIO_TypeDef *gpio = (GPIO_TypeDef *)gpio_add; // Fill GPIO object structure for future use - obj->pin = pin; obj->mask = gpio_set(pin); obj->reg_in = &gpio->IDR; obj->reg_set = &gpio->BSRR; @@ -64,6 +64,7 @@ void gpio_mode(gpio_t *obj, PinMode mode) { } void gpio_dir(gpio_t *obj, PinDirection direction) { + assert(obj->pin != (PinName)NC); if (direction == PIN_OUTPUT) { pin_function(obj->pin, STM_PIN_DATA(GPIO_Mode_Out_PP, 0)); } diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F100RB/gpio_object.h b/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F100RB/gpio_object.h index e784f466b4..f338e08ae9 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F100RB/gpio_object.h +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F100RB/gpio_object.h @@ -30,6 +30,7 @@ #ifndef MBED_GPIO_OBJECT_H #define MBED_GPIO_OBJECT_H +#include #include "cmsis.h" #include "PortNames.h" #include "PeripheralNames.h" diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F100RB/pinmap.c b/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F100RB/pinmap.c index e82f85b1cc..3cc0ca7db5 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F100RB/pinmap.c +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F100RB/pinmap.c @@ -27,6 +27,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************* */ +#include #include "device.h" #include "pinmap.h" #include "error.h" @@ -75,8 +76,7 @@ uint32_t Set_GPIO_Clock(uint32_t port_idx) { * Configure pin (input, output, alternate function or analog) + output speed + AF */ void pin_function(PinName pin, int data) { - if (pin == NC) return; - + assert(pin != (PinName)NC); // Get the pin informations uint32_t mode = STM_PIN_MODE(data); uint32_t afnum = STM_PIN_AFNUM(data); @@ -111,17 +111,16 @@ void pin_function(PinName pin, int data) { } if ((pin == PA_15) || (pin == PB_3) || (pin == PB_4)) { GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); - } + } } /** * Configure pin pull-up/pull-down */ void pin_mode(PinName pin, PinMode mode) { + assert(pin != (PinName)NC); GPIO_InitTypeDef GPIO_InitStructure; - if (pin == NC) return; - uint32_t port_index = STM_PORT(pin); uint32_t pin_index = STM_PIN(pin); @@ -131,32 +130,31 @@ void pin_mode(PinName pin, PinMode mode) { // Configure open-drain and pull-up/down switch (mode) { - case PullNone: - return; - case PullUp: - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; - break; - case PullDown: - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; - break; - case OpenDrain: - if (pin_index < 8) { - if ((gpio->CRL & (0x03 << (pin_index * 4))) > 0) { // MODE bits = Output mode - gpio->CRL |= (0x04 << (pin_index * 4)); // Set open-drain + case PullNone: + return; + case PullUp: + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; + break; + case PullDown: + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; + break; + case OpenDrain: + if (pin_index < 8) { + if ((gpio->CRL & (0x03 << (pin_index * 4))) > 0) { // MODE bits = Output mode + gpio->CRL |= (0x04 << (pin_index * 4)); // Set open-drain + } + } else { + if ((gpio->CRH & (0x03 << ((pin_index % 8) * 4))) > 0) { // MODE bits = Output mode + gpio->CRH |= (0x04 << ((pin_index % 8) * 4)); // Set open-drain + } } - } - else { - if ((gpio->CRH & (0x03 << ((pin_index % 8) * 4))) > 0) { // MODE bits = Output mode - gpio->CRH |= (0x04 << ((pin_index % 8) * 4)); // Set open-drain - } - } - return; - default: - break; + return; + default: + break; } // Configure GPIO GPIO_InitStructure.GPIO_Pin = (uint16_t)(1 << pin_index); GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; - GPIO_Init(gpio, &GPIO_InitStructure); + GPIO_Init(gpio, &GPIO_InitStructure); } diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F303VC/gpio_api.c b/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F303VC/gpio_api.c index 18ca26de89..7b80aecca5 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F303VC/gpio_api.c +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F303VC/gpio_api.c @@ -27,6 +27,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************* */ +#include #include "gpio_api.h" #include "pinmap.h" #include "error.h" @@ -34,14 +35,14 @@ extern uint32_t Set_GPIO_Clock(uint32_t port_idx); uint32_t gpio_set(PinName pin) { - if (pin == (PinName)NC) - return 0; + assert(pin != (PinName)NC); pin_function(pin, STM_PIN_DATA(GPIO_Mode_IN, 0, GPIO_PuPd_NOPULL, 0xFF)); return (uint32_t)(1 << ((uint32_t)pin & 0xF)); // Return the pin mask } void gpio_init(gpio_t *obj, PinName pin) { + obj->pin = pin; if (pin == (PinName)NC) return; @@ -52,7 +53,6 @@ void gpio_init(gpio_t *obj, PinName pin) { GPIO_TypeDef *gpio = (GPIO_TypeDef *)gpio_add; // Fill GPIO object structure for future use - obj->pin = pin; obj->mask = gpio_set(pin); obj->reg_in = &gpio->IDR; obj->reg_set = &gpio->BSRR; @@ -64,6 +64,7 @@ void gpio_mode(gpio_t *obj, PinMode mode) { } void gpio_dir(gpio_t *obj, PinDirection direction) { + assert(obj->pin != (PinName)NC); if (direction == PIN_OUTPUT) { pin_function(obj->pin, STM_PIN_DATA(GPIO_Mode_OUT, GPIO_OType_PP, GPIO_PuPd_NOPULL, 0xFF)); } else { // PIN_INPUT diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F303VC/gpio_object.h b/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F303VC/gpio_object.h index 15515cfeac..65d1f43622 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F303VC/gpio_object.h +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F303VC/gpio_object.h @@ -30,6 +30,7 @@ #ifndef MBED_GPIO_OBJECT_H #define MBED_GPIO_OBJECT_H +#include #include "cmsis.h" #include "PortNames.h" #include "PeripheralNames.h" @@ -48,9 +49,7 @@ typedef struct { } gpio_t; static inline void gpio_write(gpio_t *obj, int value) { - if (obj->pin == (PinName)NC) - return; - + assert(obj->pin != (PinName)NC); if (value) { *obj->reg_set = obj->mask; } else { @@ -59,8 +58,7 @@ static inline void gpio_write(gpio_t *obj, int value) { } static inline int gpio_read(gpio_t *obj) { - if (obj->pin == (PinName)NC) - return 0; + assert(obj->pin != (PinName)NC); return ((*obj->reg_in & obj->mask) ? 1 : 0); } diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F303VC/pinmap.c b/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F303VC/pinmap.c index 65addc0801..5dca9319e5 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F303VC/pinmap.c +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F303VC/pinmap.c @@ -27,6 +27,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************* */ +#include #include "device.h" #include "pinmap.h" #include "error.h" @@ -71,7 +72,7 @@ uint32_t Set_GPIO_Clock(uint32_t port_idx) { * Configure pin (mode, speed, output type and pull-up/pull-down) */ void pin_function(PinName pin, int data) { - if (pin == NC) return; + assert(pin != (PinName)NC); // Get the pin informations uint32_t mode = STM_PIN_MODE(data); @@ -108,14 +109,14 @@ void pin_function(PinName pin, int data) { //} //if ((pin == PA_15) || (pin == PB_3) || (pin == PB_4)) { // - //} + //} } /** * Configure pin pull-up/pull-down */ void pin_mode(PinName pin, PinMode mode) { - if (pin == NC) return; + assert(pin != (PinName)NC); uint32_t port_index = STM_PORT(pin); uint32_t pin_index = STM_PIN(pin); @@ -126,7 +127,8 @@ void pin_mode(PinName pin, PinMode mode) { // Configure pull-up/pull-down resistors uint32_t pupd = (uint32_t)mode; - if (pupd > 2) pupd = 0; // Open-drain = No pull-up/No pull-down + if (pupd > 2) + pupd = 0; // Open-drain = No pull-up/No pull-down gpio->PUPDR &= (uint32_t)(~(GPIO_PUPDR_PUPDR0 << (pin_index * 2))); gpio->PUPDR |= (uint32_t)(pupd << (pin_index * 2)); diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F407VG/gpio_api.c b/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F407VG/gpio_api.c index 1b4497ecc7..cd9a69092e 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F407VG/gpio_api.c +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F407VG/gpio_api.c @@ -27,6 +27,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************* */ +#include #include "gpio_api.h" #include "pinmap.h" #include "error.h" @@ -35,14 +36,14 @@ extern uint32_t Set_GPIO_Clock(uint32_t port_idx); uint32_t gpio_set(PinName pin) { - if (pin == (PinName)NC) - return 0; + assert(pin != (PinName)NC); pin_function(pin, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); return (uint32_t)(1 << ((uint32_t)pin & 0xF)); // Return the pin mask } void gpio_init(gpio_t *obj, PinName pin) { + obj->pin = pin; if (pin == (PinName)NC) return; uint32_t port_index = STM_PORT(pin); @@ -52,7 +53,6 @@ void gpio_init(gpio_t *obj, PinName pin) { GPIO_TypeDef *gpio = (GPIO_TypeDef *)gpio_add; // Fill GPIO object structure for future use - obj->pin = pin; obj->mask = gpio_set(pin); obj->reg_in = &gpio->IDR; obj->reg_set = &gpio->BSRRL; @@ -64,6 +64,7 @@ void gpio_mode(gpio_t *obj, PinMode mode) { } void gpio_dir(gpio_t *obj, PinDirection direction) { + assert(obj->pin != (PinName)NC); if (direction == PIN_OUTPUT) { pin_function(obj->pin, STM_PIN_DATA(STM_MODE_OUTPUT_PP, GPIO_NOPULL, 0)); } diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F407VG/gpio_object.h b/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F407VG/gpio_object.h index c8cf0aa398..8b3f175963 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F407VG/gpio_object.h +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F407VG/gpio_object.h @@ -30,6 +30,7 @@ #ifndef MBED_GPIO_OBJECT_H #define MBED_GPIO_OBJECT_H +#include #include "cmsis.h" #include "PortNames.h" #include "PeripheralNames.h" @@ -48,8 +49,7 @@ typedef struct { } gpio_t; static inline void gpio_write(gpio_t *obj, int value) { - if (obj->pin == (PinName)NC) - return; + assert(obj->pin != (PinName)NC); if (value) { *obj->reg_set = obj->mask; } @@ -59,8 +59,7 @@ static inline void gpio_write(gpio_t *obj, int value) { } static inline int gpio_read(gpio_t *obj) { - if (obj->pin == (PinName)NC) - return 0; + assert(obj->pin != (PinName)NC); return ((*obj->reg_in & obj->mask) ? 1 : 0); } diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F407VG/pinmap.c b/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F407VG/pinmap.c index b88ddeda79..1627bc6aaa 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F407VG/pinmap.c +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_DISCO_F407VG/pinmap.c @@ -27,6 +27,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************* */ +#include #include "device.h" #include "pinmap.h" #include "error.h" @@ -74,7 +75,7 @@ uint32_t Set_GPIO_Clock(uint32_t port_idx) { break; default: error("Pinmap error: wrong port number."); - break; + break; } return gpio_add; } @@ -83,8 +84,7 @@ uint32_t Set_GPIO_Clock(uint32_t port_idx) { * Configure pin (mode, speed, output type and pull-up/pull-down) */ void pin_function(PinName pin, int data) { - if (pin == NC) return; - + assert(pin != (PinName)NC); // Get the pin informations uint32_t mode = STM_PIN_MODE(data); uint32_t pupd = STM_PIN_PUPD(data); @@ -113,15 +113,14 @@ void pin_function(PinName pin, int data) { //} //if ((pin == PA_15) || (pin == PB_3) || (pin == PB_4)) { // - //} + //} } /** * Configure pin pull-up/pull-down */ void pin_mode(PinName pin, PinMode mode) { - if (pin == NC) return; - + assert(pin != (PinName)NC); uint32_t port_index = STM_PORT(pin); uint32_t pin_index = STM_PIN(pin); @@ -131,7 +130,8 @@ void pin_mode(PinName pin, PinMode mode) { // Configure pull-up/pull-down resistors uint32_t pupd = (uint32_t)mode; - if (pupd > 2) pupd = 0; // Open-drain = No pull-up/No pull-down + if (pupd > 2) + pupd = 0; // Open-drain = No pull-up/No pull-down gpio->PUPDR &= (uint32_t)(~(GPIO_PUPDR_PUPDR0 << (pin_index * 2))); gpio->PUPDR |= (uint32_t)(pupd << (pin_index * 2)); diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/gpio_api.c b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/gpio_api.c index 24bd4d7866..1810771f82 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/gpio_api.c +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/gpio_api.c @@ -27,6 +27,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************* */ +#include #include "gpio_api.h" #include "pinmap.h" #include "error.h" @@ -34,14 +35,14 @@ extern uint32_t Set_GPIO_Clock(uint32_t port_idx); uint32_t gpio_set(PinName pin) { - if (pin == (PinName)NC) - return 0; + assert(pin != (PinName)NC); pin_function(pin, STM_PIN_DATA(GPIO_Mode_IN, 0, GPIO_PuPd_NOPULL, 0xFF)); return (uint32_t)(1 << ((uint32_t)pin & 0xF)); // Return the pin mask } void gpio_init(gpio_t *obj, PinName pin) { + obj->pin = pin; if (pin == (PinName)NC) return; @@ -52,7 +53,6 @@ void gpio_init(gpio_t *obj, PinName pin) { GPIO_TypeDef *gpio = (GPIO_TypeDef *)gpio_add; // Fill GPIO object structure for future use - obj->pin = pin; obj->mask = gpio_set(pin); obj->reg_in = &gpio->IDR; obj->reg_set = &gpio->BSRR; @@ -64,6 +64,7 @@ void gpio_mode(gpio_t *obj, PinMode mode) { } void gpio_dir(gpio_t *obj, PinDirection direction) { + assert(pin != (PinName)NC); if (direction == PIN_OUTPUT) { pin_function(obj->pin, STM_PIN_DATA(GPIO_Mode_OUT, GPIO_OType_PP, GPIO_PuPd_NOPULL, 0xFF)); } diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/gpio_object.h b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/gpio_object.h index fde4b94296..9a5b49c92a 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/gpio_object.h +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/gpio_object.h @@ -30,6 +30,7 @@ #ifndef MBED_GPIO_OBJECT_H #define MBED_GPIO_OBJECT_H +#include #include "cmsis.h" #include "PortNames.h" #include "PeripheralNames.h" @@ -48,8 +49,7 @@ typedef struct { } gpio_t; static inline void gpio_write(gpio_t *obj, int value) { - if (obj->pin == (PinName)NC) - return; + assert(obj->pin != (PinName)NC); if (value) { *obj->reg_set = obj->mask; } @@ -59,8 +59,7 @@ static inline void gpio_write(gpio_t *obj, int value) { } static inline int gpio_read(gpio_t *obj) { - if (obj->pin == (PinName)NC) - return 0; + assert(obj->pin != (PinName)NC); return ((*obj->reg_in & obj->mask) ? 1 : 0); } diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/pinmap.c b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/pinmap.c index c4f21316b1..dae9a3bfc7 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/pinmap.c +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/pinmap.c @@ -27,6 +27,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************* */ +#include #include "pinmap.h" #include "PortNames.h" #include "error.h" @@ -66,7 +67,7 @@ uint32_t Set_GPIO_Clock(uint32_t port_idx) { * Configure pin (mode, speed, output type and pull-up/pull-down) */ void pin_function(PinName pin, int data) { - if (pin == NC) return; + assert(pin != (PinName)NC); // Get the pin informations uint32_t mode = STM_PIN_MODE(data); @@ -104,14 +105,14 @@ void pin_function(PinName pin, int data) { //} //if ((pin == PA_15) || (pin == PB_3) || (pin == PB_4)) { // - //} + //} } /** * Configure pin pull-up/pull-down */ void pin_mode(PinName pin, PinMode mode) { - if (pin == NC) return; + assert(pin != (PinName)NC); uint32_t port_index = STM_PORT(pin); uint32_t pin_index = STM_PIN(pin); diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F103RB/gpio_api.c b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F103RB/gpio_api.c index 2babb7a67f..9c388a98f8 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F103RB/gpio_api.c +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F103RB/gpio_api.c @@ -27,6 +27,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************* */ +#include #include "gpio_api.h" #include "pinmap.h" #include "error.h" @@ -34,14 +35,14 @@ extern uint32_t Set_GPIO_Clock(uint32_t port_idx); uint32_t gpio_set(PinName pin) { - if (pin == (PinName)NC) - return 0; + assert(pin != (PinName)NC); pin_function(pin, STM_PIN_DATA(GPIO_Mode_IN_FLOATING, 0)); return (uint32_t)(1 << ((uint32_t)pin & 0xF)); // Return the pin mask } void gpio_init(gpio_t *obj, PinName pin) { + obj->pin = pin; if (pin == (PinName)NC) return; @@ -52,7 +53,6 @@ void gpio_init(gpio_t *obj, PinName pin) { GPIO_TypeDef *gpio = (GPIO_TypeDef *)gpio_add; // Fill GPIO object structure for future use - obj->pin = pin; obj->mask = gpio_set(pin); obj->reg_in = &gpio->IDR; obj->reg_set = &gpio->BSRR; @@ -64,6 +64,7 @@ void gpio_mode(gpio_t *obj, PinMode mode) { } void gpio_dir(gpio_t *obj, PinDirection direction) { + assert(obj->pin != (PinName)NC); if (direction == PIN_OUTPUT) { pin_function(obj->pin, STM_PIN_DATA(GPIO_Mode_Out_PP, 0)); } else { // PIN_INPUT diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F103RB/gpio_object.h b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F103RB/gpio_object.h index 4bad4fcb3f..c92e88ec3d 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F103RB/gpio_object.h +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F103RB/gpio_object.h @@ -30,6 +30,7 @@ #ifndef MBED_GPIO_OBJECT_H #define MBED_GPIO_OBJECT_H +#include #include "cmsis.h" #include "PortNames.h" #include "PeripheralNames.h" @@ -48,8 +49,7 @@ typedef struct { } gpio_t; static inline void gpio_write(gpio_t *obj, int value) { - if (obj->pin == (PinName)NC) - return; + assert(obj->pin != (PinName)NC); if (value) { *obj->reg_set = obj->mask; } else { @@ -58,8 +58,7 @@ static inline void gpio_write(gpio_t *obj, int value) { } static inline int gpio_read(gpio_t *obj) { - if (obj->pin == (PinName)NC) - return 0; + assert(obj->pin != (PinName)NC); return ((*obj->reg_in & obj->mask) ? 1 : 0); } diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F103RB/pinmap.c b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F103RB/pinmap.c index 58b6de14f3..edb828259d 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F103RB/pinmap.c +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F103RB/pinmap.c @@ -27,6 +27,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************* */ +#include #include "pinmap.h" #include "PortNames.h" #include "error.h" @@ -77,8 +78,7 @@ uint32_t Set_GPIO_Clock(uint32_t port_idx) { * Configure pin (input, output, alternate function or analog) + output speed + AF */ void pin_function(PinName pin, int data) { - if (pin == NC) return; - + assert(pin != (PinName)NC); // Get the pin informations uint32_t mode = STM_PIN_MODE(data); uint32_t afnum = STM_PIN_AFNUM(data); @@ -120,10 +120,9 @@ void pin_function(PinName pin, int data) { * Configure pin pull-up/pull-down */ void pin_mode(PinName pin, PinMode mode) { + assert(pin != (PinName)NC); GPIO_InitTypeDef GPIO_InitStructure; - if (pin == NC) return; - uint32_t port_index = STM_PORT(pin); uint32_t pin_index = STM_PIN(pin); diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F302R8/gpio_api.c b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F302R8/gpio_api.c index 18ca26de89..7b80aecca5 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F302R8/gpio_api.c +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F302R8/gpio_api.c @@ -27,6 +27,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************* */ +#include #include "gpio_api.h" #include "pinmap.h" #include "error.h" @@ -34,14 +35,14 @@ extern uint32_t Set_GPIO_Clock(uint32_t port_idx); uint32_t gpio_set(PinName pin) { - if (pin == (PinName)NC) - return 0; + assert(pin != (PinName)NC); pin_function(pin, STM_PIN_DATA(GPIO_Mode_IN, 0, GPIO_PuPd_NOPULL, 0xFF)); return (uint32_t)(1 << ((uint32_t)pin & 0xF)); // Return the pin mask } void gpio_init(gpio_t *obj, PinName pin) { + obj->pin = pin; if (pin == (PinName)NC) return; @@ -52,7 +53,6 @@ void gpio_init(gpio_t *obj, PinName pin) { GPIO_TypeDef *gpio = (GPIO_TypeDef *)gpio_add; // Fill GPIO object structure for future use - obj->pin = pin; obj->mask = gpio_set(pin); obj->reg_in = &gpio->IDR; obj->reg_set = &gpio->BSRR; @@ -64,6 +64,7 @@ void gpio_mode(gpio_t *obj, PinMode mode) { } void gpio_dir(gpio_t *obj, PinDirection direction) { + assert(obj->pin != (PinName)NC); if (direction == PIN_OUTPUT) { pin_function(obj->pin, STM_PIN_DATA(GPIO_Mode_OUT, GPIO_OType_PP, GPIO_PuPd_NOPULL, 0xFF)); } else { // PIN_INPUT diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F302R8/gpio_object.h b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F302R8/gpio_object.h index 15515cfeac..65d1f43622 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F302R8/gpio_object.h +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F302R8/gpio_object.h @@ -30,6 +30,7 @@ #ifndef MBED_GPIO_OBJECT_H #define MBED_GPIO_OBJECT_H +#include #include "cmsis.h" #include "PortNames.h" #include "PeripheralNames.h" @@ -48,9 +49,7 @@ typedef struct { } gpio_t; static inline void gpio_write(gpio_t *obj, int value) { - if (obj->pin == (PinName)NC) - return; - + assert(obj->pin != (PinName)NC); if (value) { *obj->reg_set = obj->mask; } else { @@ -59,8 +58,7 @@ static inline void gpio_write(gpio_t *obj, int value) { } static inline int gpio_read(gpio_t *obj) { - if (obj->pin == (PinName)NC) - return 0; + assert(obj->pin != (PinName)NC); return ((*obj->reg_in & obj->mask) ? 1 : 0); } diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F302R8/pinmap.c b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F302R8/pinmap.c index 3cd9a2103a..05720d7568 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F302R8/pinmap.c +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F302R8/pinmap.c @@ -27,6 +27,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************* */ +#include #include "pinmap.h" #include "PortNames.h" #include "error.h" @@ -67,8 +68,7 @@ uint32_t Set_GPIO_Clock(uint32_t port_idx) { * Configure pin (mode, speed, output type and pull-up/pull-down) */ void pin_function(PinName pin, int data) { - if (pin == NC) return; - + assert(pin != (PinName)NC); // Get the pin informations uint32_t mode = STM_PIN_MODE(data); uint32_t otype = STM_PIN_OTYPE(data); @@ -111,8 +111,7 @@ void pin_function(PinName pin, int data) { * Configure pin pull-up/pull-down */ void pin_mode(PinName pin, PinMode mode) { - if (pin == NC) return; - + assert(pin != (PinName)NC); uint32_t port_index = STM_PORT(pin); uint32_t pin_index = STM_PIN(pin); @@ -122,7 +121,8 @@ void pin_mode(PinName pin, PinMode mode) { // Configure pull-up/pull-down resistors uint32_t pupd = (uint32_t)mode; - if (pupd > 2) pupd = 0; // Open-drain = No pull-up/No pull-down + if (pupd > 2) + pupd = 0; // Open-drain = No pull-up/No pull-down gpio->PUPDR &= (uint32_t)(~(GPIO_PUPDR_PUPDR0 << (pin_index * 2))); gpio->PUPDR |= (uint32_t)(pupd << (pin_index * 2)); diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/gpio_api.c b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/gpio_api.c index 2f44517db2..606f35d293 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/gpio_api.c +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/gpio_api.c @@ -27,6 +27,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************* */ +#include #include "gpio_api.h" #include "pinmap.h" #include "error.h" @@ -34,14 +35,14 @@ extern uint32_t Set_GPIO_Clock(uint32_t port_idx); uint32_t gpio_set(PinName pin) { - if (pin == (PinName)NC) - return 0; + assert(pin != (PinName)NC); pin_function(pin, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); return (uint32_t)(1 << ((uint32_t)pin & 0xF)); // Return the pin mask } void gpio_init(gpio_t *obj, PinName pin) { + obj->pin = pin; if (pin == (PinName)NC) return; @@ -52,7 +53,6 @@ void gpio_init(gpio_t *obj, PinName pin) { GPIO_TypeDef *gpio = (GPIO_TypeDef *)gpio_add; // Fill GPIO object structure for future use - obj->pin = pin; obj->mask = gpio_set(pin); obj->reg_in = &gpio->IDR; obj->reg_set = &gpio->BSRRL; @@ -64,6 +64,7 @@ void gpio_mode(gpio_t *obj, PinMode mode) { } void gpio_dir(gpio_t *obj, PinDirection direction) { + assert(obj->pin != (PinName)NC); if (direction == PIN_OUTPUT) { pin_function(obj->pin, STM_PIN_DATA(STM_MODE_OUTPUT_PP, GPIO_NOPULL, 0)); } else { // PIN_INPUT diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/gpio_object.h b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/gpio_object.h index 8a258bee05..26e9150df1 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/gpio_object.h +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/gpio_object.h @@ -30,6 +30,7 @@ #ifndef MBED_GPIO_OBJECT_H #define MBED_GPIO_OBJECT_H +#include #include "cmsis.h" #include "PortNames.h" #include "PeripheralNames.h" @@ -48,8 +49,7 @@ typedef struct { } gpio_t; static inline void gpio_write(gpio_t *obj, int value) { - if (obj->pin == (PinName)NC) - return; + assert(obj->pin != (PinName)NC); if (value) { *obj->reg_set = obj->mask; } else { @@ -58,8 +58,7 @@ static inline void gpio_write(gpio_t *obj, int value) { } static inline int gpio_read(gpio_t *obj) { - if (obj->pin == (PinName)NC) - return 0; + assert(obj->pin != (PinName)NC); return ((*obj->reg_in & obj->mask) ? 1 : 0); } diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/pinmap.c b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/pinmap.c index 53fe5ab305..280b5d2757 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/pinmap.c +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/pinmap.c @@ -27,6 +27,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************* */ +#include #include "pinmap.h" #include "PortNames.h" #include "error.h" @@ -82,8 +83,7 @@ uint32_t Set_GPIO_Clock(uint32_t port_idx) { * Configure pin (mode, speed, output type and pull-up/pull-down) */ void pin_function(PinName pin, int data) { - if (pin == NC) return; - + assert(pin != (PinName)NC); // Get the pin informations uint32_t mode = STM_PIN_MODE(data); uint32_t pupd = STM_PIN_PUPD(data); @@ -119,8 +119,7 @@ void pin_function(PinName pin, int data) { * Configure pin pull-up/pull-down */ void pin_mode(PinName pin, PinMode mode) { - if (pin == NC) return; - + assert(pin != (PinName)NC); uint32_t port_index = STM_PORT(pin); uint32_t pin_index = STM_PIN(pin); @@ -130,7 +129,8 @@ void pin_mode(PinName pin, PinMode mode) { // Configure pull-up/pull-down resistors uint32_t pupd = (uint32_t)mode; - if (pupd > 2) pupd = 0; // Open-drain = No pull-up/No pull-down + if (pupd > 2) + pupd = 0; // Open-drain = No pull-up/No pull-down gpio->PUPDR &= (uint32_t)(~(GPIO_PUPDR_PUPDR0 << (pin_index * 2))); gpio->PUPDR |= (uint32_t)(pupd << (pin_index * 2)); diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L053R8/gpio_api.c b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L053R8/gpio_api.c index ceb238d89d..87eb705842 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L053R8/gpio_api.c +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L053R8/gpio_api.c @@ -27,6 +27,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************* */ +#include #include "gpio_api.h" #include "pinmap.h" #include "error.h" @@ -34,14 +35,14 @@ extern uint32_t Set_GPIO_Clock(uint32_t port_idx); uint32_t gpio_set(PinName pin) { - if (pin == (PinName)NC) - return 0; + assert(pin != (PinName)NC); pin_function(pin, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); return (uint32_t)(1 << ((uint32_t)pin & 0xF)); // Return the pin mask } void gpio_init(gpio_t *obj, PinName pin) { + obj->pin = pin; if (pin == (PinName)NC) return; @@ -52,7 +53,6 @@ void gpio_init(gpio_t *obj, PinName pin) { GPIO_TypeDef *gpio = (GPIO_TypeDef *)gpio_add; // Fill GPIO object structure for future use - obj->pin = pin; obj->mask = gpio_set(pin); obj->reg_in = &gpio->IDR; obj->reg_set = &gpio->BSRR; @@ -64,6 +64,7 @@ void gpio_mode(gpio_t *obj, PinMode mode) { } void gpio_dir(gpio_t *obj, PinDirection direction) { + assert(pin != (PinName)NC); if (direction == PIN_OUTPUT) { pin_function(obj->pin, STM_PIN_DATA(STM_MODE_OUTPUT_PP, GPIO_NOPULL, 0)); } else { // PIN_INPUT diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L053R8/gpio_object.h b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L053R8/gpio_object.h index 15515cfeac..65d1f43622 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L053R8/gpio_object.h +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L053R8/gpio_object.h @@ -30,6 +30,7 @@ #ifndef MBED_GPIO_OBJECT_H #define MBED_GPIO_OBJECT_H +#include #include "cmsis.h" #include "PortNames.h" #include "PeripheralNames.h" @@ -48,9 +49,7 @@ typedef struct { } gpio_t; static inline void gpio_write(gpio_t *obj, int value) { - if (obj->pin == (PinName)NC) - return; - + assert(obj->pin != (PinName)NC); if (value) { *obj->reg_set = obj->mask; } else { @@ -59,8 +58,7 @@ static inline void gpio_write(gpio_t *obj, int value) { } static inline int gpio_read(gpio_t *obj) { - if (obj->pin == (PinName)NC) - return 0; + assert(obj->pin != (PinName)NC); return ((*obj->reg_in & obj->mask) ? 1 : 0); } diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L053R8/pinmap.c b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L053R8/pinmap.c index 5024f4ba7a..b58c7ceb61 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L053R8/pinmap.c +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L053R8/pinmap.c @@ -27,6 +27,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************* */ +#include #include "pinmap.h" #include "PortNames.h" #include "error.h" @@ -82,8 +83,7 @@ uint32_t Set_GPIO_Clock(uint32_t port_idx) { * Configure pin (mode, speed, output type and pull-up/pull-down) */ void pin_function(PinName pin, int data) { - if (pin == NC) return; - + assert(pin != (PinName)NC); // Get the pin informations uint32_t mode = STM_PIN_MODE(data); uint32_t pupd = STM_PIN_PUPD(data); @@ -119,8 +119,7 @@ void pin_function(PinName pin, int data) { * Configure pin pull-up/pull-down */ void pin_mode(PinName pin, PinMode mode) { - if (pin == NC) return; - + assert(pin != (PinName)NC); uint32_t port_index = STM_PORT(pin); uint32_t pin_index = STM_PIN(pin); @@ -130,7 +129,8 @@ void pin_mode(PinName pin, PinMode mode) { // Configure pull-up/pull-down resistors uint32_t pupd = (uint32_t)mode; - if (pupd > 2) pupd = 0; // Open-drain = No pull-up/No pull-down + if (pupd > 2) + pupd = 0; // Open-drain = No pull-up/No pull-down gpio->PUPDR &= (uint32_t)(~(GPIO_PUPDR_PUPD0 << (pin_index * 2))); gpio->PUPDR |= (uint32_t)(pupd << (pin_index * 2)); diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L152RE/gpio_api.c b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L152RE/gpio_api.c index 059cc68b97..d106d3cc23 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L152RE/gpio_api.c +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L152RE/gpio_api.c @@ -27,6 +27,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************* */ +#include #include "gpio_api.h" #include "pinmap.h" #include "error.h" @@ -34,14 +35,14 @@ extern uint32_t Set_GPIO_Clock(uint32_t port_idx); uint32_t gpio_set(PinName pin) { - if (pin == (PinName)NC) - return 0; + assert(pin != (PinName)NC); pin_function(pin, STM_PIN_DATA(GPIO_Mode_IN, 0, GPIO_PuPd_NOPULL, 0xFF)); return (uint32_t)(1 << ((uint32_t)pin & 0xF)); // Return the pin mask } void gpio_init(gpio_t *obj, PinName pin) { + obj->pin = pin; if (pin == (PinName)NC) return; uint32_t port_index = STM_PORT(pin); @@ -51,7 +52,6 @@ void gpio_init(gpio_t *obj, PinName pin) { GPIO_TypeDef *gpio = (GPIO_TypeDef *)gpio_add; // Fill GPIO object structure for future use - obj->pin = pin; obj->mask = gpio_set(pin); obj->reg_in = &gpio->IDR; obj->reg_set = &gpio->BSRRL; @@ -63,6 +63,7 @@ void gpio_mode(gpio_t *obj, PinMode mode) { } void gpio_dir(gpio_t *obj, PinDirection direction) { + assert(obj->pin != (PinName)NC); if (direction == PIN_OUTPUT) { pin_function(obj->pin, STM_PIN_DATA(GPIO_Mode_OUT, GPIO_OType_PP, GPIO_PuPd_NOPULL, 0xFF)); } else { // PIN_INPUT diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L152RE/gpio_object.h b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L152RE/gpio_object.h index c1cb3a8b88..0e41836794 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L152RE/gpio_object.h +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L152RE/gpio_object.h @@ -30,6 +30,7 @@ #ifndef MBED_GPIO_OBJECT_H #define MBED_GPIO_OBJECT_H +#include #include "cmsis.h" #include "PortNames.h" #include "PeripheralNames.h" @@ -48,8 +49,7 @@ typedef struct { } gpio_t; static inline void gpio_write(gpio_t *obj, int value) { - if (obj->pin == (PinName)NC) - return; + assert(obj->pin != (PinName)NC); if (value) { *obj->reg_set = obj->mask; } else { @@ -58,8 +58,7 @@ static inline void gpio_write(gpio_t *obj, int value) { } static inline int gpio_read(gpio_t *obj) { - if (obj->pin == (PinName)NC) - return 0; + assert(obj->pin != (PinName)NC); return ((*obj->reg_in & obj->mask) ? 1 : 0); } diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L152RE/pinmap.c b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L152RE/pinmap.c index 715f165286..3d1e396579 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L152RE/pinmap.c +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L152RE/pinmap.c @@ -27,6 +27,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************* */ +#include #include "pinmap.h" #include "PortNames.h" #include "error.h" @@ -66,7 +67,7 @@ uint32_t Set_GPIO_Clock(uint32_t port_idx) { * Configure pin (mode, speed, output type and pull-up/pull-down) */ void pin_function(PinName pin, int data) { - if (pin == NC) return; + assert(pin != (PinName)NC); // Get the pin informations uint32_t mode = STM_PIN_MODE(data); @@ -110,7 +111,7 @@ void pin_function(PinName pin, int data) { * Configure pin pull-up/pull-down */ void pin_mode(PinName pin, PinMode mode) { - if (pin == NC) return; + assert(pin != (PinName)NC); uint32_t port_index = STM_PORT(pin); uint32_t pin_index = STM_PIN(pin); @@ -121,7 +122,8 @@ void pin_mode(PinName pin, PinMode mode) { // Configure pull-up/pull-down resistors uint32_t pupd = (uint32_t)mode; - if (pupd > 2) pupd = 0; // Open-drain = No pull-up/No pull-down + if (pupd > 2) + pupd = 0; // Open-drain = No pull-up/No pull-down gpio->PUPDR &= (uint32_t)(~(GPIO_PUPDR_PUPDR0 << (pin_index * 2))); gpio->PUPDR |= (uint32_t)(pupd << (pin_index * 2)); diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_STM32F3XX/gpio_api.c b/libraries/mbed/targets/hal/TARGET_STM/TARGET_STM32F3XX/gpio_api.c index 9a3a6705c6..6ed13d35b0 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_STM32F3XX/gpio_api.c +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_STM32F3XX/gpio_api.c @@ -27,6 +27,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************* */ +#include #include "gpio_api.h" #include "pinmap.h" #include "error.h" @@ -34,8 +35,7 @@ extern uint32_t Set_GPIO_Clock(uint32_t port_idx); uint32_t gpio_set(PinName pin) { - if (pin == (PinName)NC) - return 0; + assert(pin != (PinName)NC); pin_function(pin, STM_PIN_DATA(GPIO_Mode_IN, 0, GPIO_PuPd_NOPULL, 0xFF)); @@ -43,6 +43,7 @@ uint32_t gpio_set(PinName pin) { } void gpio_init(gpio_t *obj, PinName pin) { + obj->pin = pin; if (pin == (PinName)NC) return; @@ -53,7 +54,6 @@ void gpio_init(gpio_t *obj, PinName pin) { GPIO_TypeDef *gpio = (GPIO_TypeDef *)gpio_add; // Fill GPIO object structure for future use - obj->pin = pin; obj->mask = gpio_set(pin); obj->reg_in = &gpio->IDR; obj->reg_set = &gpio->BSRR; @@ -65,6 +65,7 @@ void gpio_mode(gpio_t *obj, PinMode mode) { } void gpio_dir(gpio_t *obj, PinDirection direction) { + assert(obj->pin != (PinName)NC); if (direction == PIN_OUTPUT) { pin_function(obj->pin, STM_PIN_DATA(GPIO_Mode_OUT, GPIO_OType_PP, GPIO_PuPd_NOPULL, 0xFF)); } else { // PIN_INPUT diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_STM32F3XX/gpio_object.h b/libraries/mbed/targets/hal/TARGET_STM/TARGET_STM32F3XX/gpio_object.h index 504b3c012b..65d1f43622 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_STM32F3XX/gpio_object.h +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_STM32F3XX/gpio_object.h @@ -30,6 +30,7 @@ #ifndef MBED_GPIO_OBJECT_H #define MBED_GPIO_OBJECT_H +#include #include "cmsis.h" #include "PortNames.h" #include "PeripheralNames.h" @@ -48,8 +49,7 @@ typedef struct { } gpio_t; static inline void gpio_write(gpio_t *obj, int value) { - if (obj->pin == (PinName)NC) - return; + assert(obj->pin != (PinName)NC); if (value) { *obj->reg_set = obj->mask; } else { @@ -58,8 +58,7 @@ static inline void gpio_write(gpio_t *obj, int value) { } static inline int gpio_read(gpio_t *obj) { - if (obj->pin == (PinName)NC) - return 0; + assert(obj->pin != (PinName)NC); return ((*obj->reg_in & obj->mask) ? 1 : 0); } diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_STM32F3XX/pinmap.c b/libraries/mbed/targets/hal/TARGET_STM/TARGET_STM32F3XX/pinmap.c index d446e5f2c5..841b3a5517 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_STM32F3XX/pinmap.c +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_STM32F3XX/pinmap.c @@ -27,6 +27,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************* */ +#include #include "pinmap.h" #include "PortNames.h" #include "error.h" @@ -71,7 +72,7 @@ uint32_t Set_GPIO_Clock(uint32_t port_idx) { * Configure pin (mode, speed, output type and pull-up/pull-down) */ void pin_function(PinName pin, int data) { - if (pin == NC) return; + assert(pin != (PinName)NC); // Get the pin informations uint32_t mode = STM_PIN_MODE(data); @@ -115,7 +116,7 @@ void pin_function(PinName pin, int data) { * Configure pin pull-up/pull-down */ void pin_mode(PinName pin, PinMode mode) { - if (pin == NC) return; + assert(pin != (PinName)NC); uint32_t port_index = STM_PORT(pin); uint32_t pin_index = STM_PIN(pin); @@ -126,7 +127,8 @@ void pin_mode(PinName pin, PinMode mode) { // Configure pull-up/pull-down resistors uint32_t pupd = (uint32_t)mode; - if (pupd > 2) pupd = 0; // Open-drain = No pull-up/No pull-down + if (pupd > 2) + pupd = 0; // Open-drain = No pull-up/No pull-down gpio->PUPDR &= (uint32_t)(~(GPIO_PUPDR_PUPDR0 << (pin_index * 2))); gpio->PUPDR |= (uint32_t)(pupd << (pin_index * 2)); diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_STM32F4XX/gpio_api.c b/libraries/mbed/targets/hal/TARGET_STM/TARGET_STM32F4XX/gpio_api.c index 768e9e7bba..6d33fc4ec3 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_STM32F4XX/gpio_api.c +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_STM32F4XX/gpio_api.c @@ -13,10 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include #include "gpio_api.h" #include "pinmap.h" uint32_t gpio_set(PinName pin) { + assert(pin != (PinName)NC); uint32_t port_index = (uint32_t) pin >> 4; // Enable GPIO peripheral clock @@ -27,10 +29,10 @@ uint32_t gpio_set(PinName pin) { } void gpio_init(gpio_t *obj, PinName pin) { + obj->pin = pin; if (pin == (PinName)NC) return; - obj->pin = pin; obj->mask = gpio_set(pin); uint32_t port_index = (uint32_t) pin >> 4; @@ -47,6 +49,7 @@ void gpio_mode(gpio_t *obj, PinMode mode) { } void gpio_dir(gpio_t *obj, PinDirection direction) { + assert(obj->pin != (PinName)NC); switch (direction) { case PIN_INPUT : pin_function(obj->pin, STM_PIN_DATA(0, 0)); diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_STM32F4XX/gpio_object.h b/libraries/mbed/targets/hal/TARGET_STM/TARGET_STM32F4XX/gpio_object.h index 23c6ad8e51..4b7855ecd6 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_STM32F4XX/gpio_object.h +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_STM32F4XX/gpio_object.h @@ -16,6 +16,8 @@ #ifndef MBED_GPIO_OBJECT_H #define MBED_GPIO_OBJECT_H +#include + #ifdef __cplusplus extern "C" { #endif @@ -32,8 +34,7 @@ typedef struct { } gpio_t; static inline void gpio_write(gpio_t *obj, int value) { - if (obj->pin == (PinName)NC) - return; + assert(obj->pin != (PinName)NC); if (value) *obj->reg_set = obj->mask; else @@ -41,8 +42,7 @@ static inline void gpio_write(gpio_t *obj, int value) { } static inline int gpio_read(gpio_t *obj) { - if (obj->pin == (PinName)NC) - return 0; + assert(obj->pin != (PinName)NC); return ((*obj->reg_in & obj->mask) ? 1 : 0); } diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_STM32F4XX/pinmap.c b/libraries/mbed/targets/hal/TARGET_STM/TARGET_STM32F4XX/pinmap.c index fce1147797..e7c7fe25f6 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_STM32F4XX/pinmap.c +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_STM32F4XX/pinmap.c @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include #include "pinmap.h" #include "error.h" @@ -20,7 +21,7 @@ * Set the pin into input, output, alternate function or analog mode */ void pin_function(PinName pin, int data) { - if (pin == (uint32_t)NC) return; + assert(pin != (PinName)NC); int mode = STM_PIN_MODE(data); int func = STM_PIN_FUNC(data); @@ -53,7 +54,7 @@ void pin_function(PinName pin, int data) { } void pin_mode(PinName pin, PinMode mode) { - if (pin == (uint32_t)NC) { return; } + assert(pin != (PinName)NC); uint32_t pin_number = (uint32_t)pin; int port_index = pin_number >> 4;