summaryrefslogtreecommitdiffstatshomepage
path: root/stmhal/led.c
diff options
context:
space:
mode:
Diffstat (limited to 'stmhal/led.c')
-rw-r--r--stmhal/led.c15
1 files changed, 3 insertions, 12 deletions
diff --git a/stmhal/led.c b/stmhal/led.c
index 8cef02425a..c1b298b179 100644
--- a/stmhal/led.c
+++ b/stmhal/led.c
@@ -61,7 +61,7 @@ STATIC const pyb_led_obj_t pyb_led_obj[] = {
#endif
#endif
};
-#define NUM_LEDS ARRAY_SIZE(pyb_led_obj)
+#define NUM_LEDS MP_ARRAY_SIZE(pyb_led_obj)
void led_init(void) {
/* GPIO structure */
@@ -148,18 +148,9 @@ void led_toggle(pyb_led_t led) {
}
#endif
+ // toggle the output data register to toggle the LED state
const pin_obj_t *led_pin = pyb_led_obj[led - 1].led_pin;
- GPIO_TypeDef *gpio = led_pin->gpio;
-
- // We don't know if we're turning the LED on or off, but we don't really
- // care. Just invert the state.
- if (gpio->ODR & led_pin->pin_mask) {
- // pin is high, make it low
- gpio->BSRRH = led_pin->pin_mask;
- } else {
- // pin is low, make it high
- gpio->BSRRL = led_pin->pin_mask;
- }
+ led_pin->gpio->ODR ^= led_pin->pin_mask;
}
int led_get_intensity(pyb_led_t led) {