diff --git a/boards/alientek-pandora/include/board.h b/boards/alientek-pandora/include/board.h index a75fcee166..76284c8287 100644 --- a/boards/alientek-pandora/include/board.h +++ b/boards/alientek-pandora/include/board.h @@ -31,26 +31,14 @@ extern "C" { * @name LED pin definitions and handlers * @{ */ -#define LED0_PIN GPIO_PIN(PORT_E, 7) /**< LED0 gpio pin */ -#define LED0_MASK (1 << 7) /**< LED0 gpio mask */ +#define LED0_PIN_NUM 7 +#define LED0_PORT_NUM PORT_E -#define LED0_ON (GPIOB->BSRR = LED0_MASK) /**< Turn on LED0 */ -#define LED0_OFF (GPIOB->BSRR = (LED0_MASK << 16)) /**< Turn off LED0 */ -#define LED0_TOGGLE (GPIOB->ODR ^= LED0_MASK) /**< Toggle LED0 */ +#define LED1_PIN_NUM 8 +#define LED1_PORT_NUM PORT_E -#define LED1_PIN GPIO_PIN(PORT_E, 8) /**< LED1 gpio pin */ -#define LED1_MASK (1 << 8) /**< LED1 gpio mask */ - -#define LED1_ON (GPIOE->BSRR = LED1_MASK) /**< Turn on LED1 */ -#define LED1_OFF (GPIOE->BSRR = (LED1_MASK << 16)) /**< Turn off LED1 */ -#define LED1_TOGGLE (GPIOE->ODR ^= LED1_MASK) /**< Toggle LED1 */ - -#define LED2_PIN GPIO_PIN(PORT_E, 9) /**< LED2 gpio pin */ -#define LED2_MASK (1 << 9) /**< LED2 gpio mask */ - -#define LED2_ON (GPIOE->BSRR = LED2_MASK) /**< Turn on LED2 */ -#define LED2_OFF (GPIOE->BSRR = (LED2_MASK << 16)) /**< Turn off LED2 */ -#define LED2_TOGGLE (GPIOE->ODR ^= LED2_MASK) /**< Toggle LED2 */ +#define LED2_PIN_NUM 9 +#define LED2_PORT_NUM PORT_E /** @} */ @@ -75,5 +63,7 @@ extern "C" { } #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */ diff --git a/boards/b-l072z-lrwan1/include/board.h b/boards/b-l072z-lrwan1/include/board.h index 8a24c99588..ed2868be97 100644 --- a/boards/b-l072z-lrwan1/include/board.h +++ b/boards/b-l072z-lrwan1/include/board.h @@ -54,33 +54,17 @@ extern "C" { * @name LED pin definitions and handlers * @{ */ -#define LED0_PIN GPIO_PIN(PORT_A, 5) -#define LED0_MASK (1 << 5) +#define LED0_PIN_NUM 5 +#define LED0_PORT_NUM PORT_A -#define LED0_ON (GPIOA->BSRR = LED0_MASK) -#define LED0_OFF (GPIOA->BSRR = (LED0_MASK << 16)) -#define LED0_TOGGLE (GPIOA->ODR ^= LED0_MASK) +#define LED1_PIN_NUM 5 +#define LED1_PORT_NUM PORT_B -#define LED1_PIN GPIO_PIN(PORT_B, 5) -#define LED1_MASK (1 << 5) +#define LED2_PIN_NUM 6 +#define LED2_PORT_NUM PORT_B -#define LED1_ON (GPIOB->BSRR = LED1_MASK) -#define LED1_OFF (GPIOB->BSRR = (LED1_MASK << 16)) -#define LED1_TOGGLE (GPIOB->ODR ^= LED1_MASK) - -#define LED2_PIN GPIO_PIN(PORT_B, 6) -#define LED2_MASK (1 << 6) - -#define LED2_ON (GPIOB->BSRR = LED2_MASK) -#define LED2_OFF (GPIOB->BSRR = (LED2_MASK << 16)) -#define LED2_TOGGLE (GPIOB->ODR ^= LED2_MASK) - -#define LED3_PIN GPIO_PIN(PORT_B, 7) -#define LED3_MASK (1 << 7) - -#define LED3_ON (GPIOB->BSRR = LED3_MASK) -#define LED3_OFF (GPIOB->BSRR = (LED3_MASK << 16)) -#define LED3_TOGGLE (GPIOB->ODR ^= LED3_MASK) +#define LED3_PIN_NUM 7 +#define LED3_PORT_NUM PORT_B /** @} */ /** @@ -95,5 +79,7 @@ extern "C" { } #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */ diff --git a/boards/b-l475e-iot01a/include/board.h b/boards/b-l475e-iot01a/include/board.h index 2bb30eba2f..b2315c555b 100644 --- a/boards/b-l475e-iot01a/include/board.h +++ b/boards/b-l475e-iot01a/include/board.h @@ -31,19 +31,11 @@ extern "C" { * @name LED pin definitions and handlers * @{ */ -#define LED0_PIN GPIO_PIN(PORT_A, 5) -#define LED0_MASK (1 << 5) +#define LED0_PIN_NUM 5 +#define LED0_PORT_NUM PORT_A -#define LED0_ON (GPIOA->BSRR = LED0_MASK) -#define LED0_OFF (GPIOA->BSRR = (LED0_MASK << 16)) -#define LED0_TOGGLE (GPIOA->ODR ^= LED0_MASK) - -#define LED1_PIN GPIO_PIN(PORT_B, 14) -#define LED1_MASK (1 << 14) - -#define LED1_ON (GPIOB->BSRR = LED1_MASK) -#define LED1_OFF (GPIOB->BSRR = (LED1_MASK << 16)) -#define LED1_TOGGLE (GPIOB->ODR ^= LED1_MASK) +#define LED1_PIN_NUM 14 +#define LED1_PORT_NUM PORT_B /** @} */ /** @@ -87,5 +79,7 @@ extern "C" { } #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */ diff --git a/boards/b-u585i-iot02a/include/board.h b/boards/b-u585i-iot02a/include/board.h index 969f306e36..bcfc76ec62 100644 --- a/boards/b-u585i-iot02a/include/board.h +++ b/boards/b-u585i-iot02a/include/board.h @@ -31,26 +31,14 @@ extern "C" { * @name LED pin definitions and handlers * @{ */ -#define LED0_PIN GPIO_PIN(PORT_E, 13) -#define LED0_MASK (1 << 13) +#define LED0_PIN_NUM 13 +#define LED0_PORT_NUM PORT_E -#define LED0_ON (GPIOE->BSRR = LED0_MASK) -#define LED0_OFF (GPIOE->BSRR = (LED0_MASK << 16)) -#define LED0_TOGGLE (GPIOE->ODR ^= LED0_MASK) +#define LED1_PIN_NUM 6 +#define LED1_PORT_NUM PORT_H -#define LED1_PIN GPIO_PIN(PORT_H, 6) -#define LED1_MASK (1 << 6) - -#define LED1_ON (GPIOH->BSRR = LED1_MASK) -#define LED1_OFF (GPIOH->BSRR = (LED1_MASK << 16)) -#define LED1_TOGGLE (GPIOH->ODR ^= LED1_MASK) - -#define LED2_PIN GPIO_PIN(PORT_H, 7) -#define LED2_MASK (1 << 7) - -#define LED2_ON (GPIOH->BSRR = LED2_MASK) -#define LED2_OFF (GPIOH->BSRR = (LED2_MASK << 16)) -#define LED2_TOGGLE (GPIOH->ODR ^= LED2_MASK) +#define LED2_PIN_NUM 7 +#define LED2_PORT_NUM PORT_H /** @} */ /** @@ -79,5 +67,7 @@ extern "C" { } #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */ diff --git a/boards/blackpill-128kib/include/board.h b/boards/blackpill-128kib/include/board.h index 3dfc00f1bb..8cfe82873d 100644 --- a/boards/blackpill-128kib/include/board.h +++ b/boards/blackpill-128kib/include/board.h @@ -35,9 +35,8 @@ extern "C" { * @name Macros for controlling the on-board LED. * @{ */ -#define LED0_PORT GPIOB /**< GPIO-Port the LED is connected to */ -#define LED0_PORTNUM PORT_B /**< GPIO Port number the LED is connected to */ -#define LED0_PINNUM (12) /**< Pin number the LED is connected to */ +#define LED0_PORT_NUM PORT_B /**< GPIO Port number the LED is connected to */ +#define LED0_PIN_NUM (12) /**< Pin number the LED is connected to */ /** @} */ #ifdef __cplusplus diff --git a/boards/blackpill/include/board.h b/boards/blackpill/include/board.h index 6d8fe5c256..74292d6934 100644 --- a/boards/blackpill/include/board.h +++ b/boards/blackpill/include/board.h @@ -35,9 +35,8 @@ extern "C" { * @name Macros for controlling the on-board LED. * @{ */ -#define LED0_PORT GPIOB /**< GPIO-Port the LED is connected to */ -#define LED0_PORTNUM PORT_B /**< GPIO Port number the LED is connected to */ -#define LED0_PINNUM (12) /**< Pin number the LED is connected to */ +#define LED0_PORT_NUM PORT_B /**< GPIO Port number the LED is connected to */ +#define LED0_PIN_NUM 12 /**< Pin number the LED is connected to */ /** @} */ #ifdef __cplusplus diff --git a/boards/bluepill-stm32f030c8/include/board.h b/boards/bluepill-stm32f030c8/include/board.h index 83959cf006..ea01deb911 100644 --- a/boards/bluepill-stm32f030c8/include/board.h +++ b/boards/bluepill-stm32f030c8/include/board.h @@ -39,18 +39,16 @@ extern "C" { * @name LED pin definitions and handlers * @{ */ -#define LED0_PORT GPIOC -#define LED0_PIN GPIO_PIN(PORT_C, 13) -#define LED0_MASK (1 << 13) - -#define LED0_ON (LED0_PORT->BSRR = (LED0_MASK << 16)) -#define LED0_OFF (LED0_PORT->BSRR = (LED0_MASK << 0)) -#define LED0_TOGGLE (LED0_PORT->ODR ^= LED0_MASK) +#define LED0_PIN_NUM 13 +#define LED0_PORT_NUM PORT_C +#define LED0_IS_INVERTED 1 /** @} */ #ifdef __cplusplus } #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */ diff --git a/boards/common/blxxxpill/include/board_common.h b/boards/common/blxxxpill/include/board_common.h index bff1a6d05c..75dcfee3f7 100644 --- a/boards/common/blxxxpill/include/board_common.h +++ b/boards/common/blxxxpill/include/board_common.h @@ -32,21 +32,15 @@ extern "C" { * @name Macros for controlling the on-board LED. * @{ */ -#ifndef LED0_PORT -#define LED0_PORT GPIOC /**< GPIO-Port the LED is connected to */ +#ifndef LED0_PORT_NUM +#define LED0_PORT_NUM PORT_C /**< GPIO Port number the LED is connected to */ #endif -#ifndef LED0_PORTNUM -#define LED0_PORTNUM PORT_C /**< GPIO Port number the LED is connected to */ +#ifndef LED0_PIN_NUM +#define LED0_PIN_NUM (13) /**< Pin number the LED is connected to */ #endif -#ifndef LED0_PINNUM -#define LED0_PINNUM (13) /**< Pin number the LED is connected to */ +#ifndef LED0_IS_INVERTED +#define LED0_IS_INVERTED 1 #endif -#define LED0_PIN GPIO_PIN(LED0_PORTNUM, LED0_PINNUM) /**< GPIO-Pin the LED is connected to */ -#define LED0_MASK (1 << LED0_PINNUM) - -#define LED0_ON (LED0_PORT->BSRR = (LED0_MASK << 16)) /**< Turn LED0 on */ -#define LED0_OFF (LED0_PORT->BSRR = LED0_MASK) /**< Turn LED0 off */ -#define LED0_TOGGLE (LED0_PORT->ODR ^= LED0_MASK) /**< Toggle LED0 */ /** @} */ /** @@ -74,5 +68,7 @@ extern "C" { } #endif +#include "stm32_leds.h" + #endif /* BOARD_COMMON_H */ /** @} */ diff --git a/boards/common/iotlab/include/board_common.h b/boards/common/iotlab/include/board_common.h index 0129673aa1..21bfb3d07a 100644 --- a/boards/common/iotlab/include/board_common.h +++ b/boards/common/iotlab/include/board_common.h @@ -77,30 +77,21 @@ extern "C" { * @name LED pin definitions and handlers * @{ */ -#define LED0_PIN GPIO_PIN(PORT_D, 2) -#define LED1_PIN GPIO_PIN(PORT_B, 5) -#define LED2_PIN GPIO_PIN(PORT_C, 10) +#define LED0_PIN_NUM 2 +#define LED0_PORT_NUM PORT_D -#define LED0_MASK (1 << 2) -#define LED1_MASK (1 << 5) -#define LED2_MASK (1 << 10) +#define LED1_PIN_NUM 5 +#define LED1_PORT_NUM PORT_B -#define LED0_ON (GPIOD->ODR &= ~LED0_MASK) -#define LED0_OFF (GPIOD->ODR |= LED0_MASK) -#define LED0_TOGGLE (GPIOD->ODR ^= LED0_MASK) - -#define LED1_ON (GPIOB->ODR &= ~LED1_MASK) -#define LED1_OFF (GPIOB->ODR |= LED1_MASK) -#define LED1_TOGGLE (GPIOB->ODR ^= LED1_MASK) - -#define LED2_ON (GPIOC->ODR &= ~LED2_MASK) -#define LED2_OFF (GPIOC->ODR |= LED2_MASK) -#define LED2_TOGGLE (GPIOC->ODR ^= LED2_MASK) +#define LED2_PIN_NUM 10 +#define LED2_PORT_NUM PORT_C /** @} */ #ifdef __cplusplus } #endif +#include "stm32_leds.h" + #endif /* BOARD_COMMON_H */ /** @} */ diff --git a/boards/common/nucleo144/include/board.h b/boards/common/nucleo144/include/board.h index 4920fad4ec..03ae7a3634 100644 --- a/boards/common/nucleo144/include/board.h +++ b/boards/common/nucleo144/include/board.h @@ -39,36 +39,23 @@ extern "C" { */ #if defined(CPU_MODEL_STM32L496ZG) || defined(CPU_MODEL_STM32L4R5ZI) || \ defined(CPU_MODEL_STM32L552ZE) -#define LED0_PORT GPIOC -#define LED0_PIN GPIO_PIN(PORT_C, 7) -#define LED0_MASK (1 << 7) +#define LED0_PIN_NUM 7 +#define LED0_PORT_NUM PORT_C #else -#define LED0_PORT GPIOB -#define LED0_PIN GPIO_PIN(PORT_B, 0) -#define LED0_MASK (1 << 0) +#define LED0_PIN_NUM 0 +#define LED0_PORT_NUM PORT_B #endif -#define LED0_ON (LED0_PORT->BSRR = LED0_MASK) -#define LED0_OFF (LED0_PORT->BSRR = (LED0_MASK << 16)) -#define LED0_TOGGLE (LED0_PORT->ODR ^= LED0_MASK) -#define LED1_PIN GPIO_PIN(PORT_B, 7) -#define LED1_MASK (1 << 7) -#define LED1_ON (GPIOB->BSRR = LED1_MASK) -#define LED1_OFF (GPIOB->BSRR = (LED1_MASK << 16)) -#define LED1_TOGGLE (GPIOB->ODR ^= LED1_MASK) +#define LED1_PIN_NUM 7 +#define LED1_PORT_NUM PORT_B #if defined(CPU_MODEL_STM32L552ZE) -#define LED2_PORT GPIOA -#define LED2_PIN GPIO_PIN(PORT_A, 9) -#define LED2_MASK (1 << 9) +#define LED2_PIN_NUM 9 +#define LED2_PORT_NUM PORT_A #else -#define LED2_PORT GPIOB -#define LED2_PIN GPIO_PIN(PORT_B, 14) -#define LED2_MASK (1 << 14) +#define LED2_PIN_NUM 14 +#define LED2_PORT_NUM PORT_B #endif -#define LED2_ON (LED2_PORT->BSRR = LED2_MASK) -#define LED2_OFF (LED2_PORT->BSRR = (LED2_MASK << 16)) -#define LED2_TOGGLE (LED2_PORT->ODR ^= LED2_MASK) /** @} */ /** @@ -83,5 +70,7 @@ extern "C" { } #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */ diff --git a/boards/common/nucleo32/include/board.h b/boards/common/nucleo32/include/board.h index 9b63b53e28..b15f59c65c 100644 --- a/boards/common/nucleo32/include/board.h +++ b/boards/common/nucleo32/include/board.h @@ -33,16 +33,15 @@ extern "C" { * @name Macros for controlling the on-board LED (LD3). * @{ */ -#define LED0_PIN GPIO_PIN(PORT_B, 3) -#define LED0_MASK (1 << 3) -#define LED0_ON (GPIOB->BSRR = LED0_MASK) -#define LED0_OFF (GPIOB->BSRR = (LED0_MASK << 16)) -#define LED0_TOGGLE (GPIOB->ODR ^= LED0_MASK) +#define LED0_PIN_NUM 3 +#define LED0_PORT_NUM PORT_B /** @} */ #ifdef __cplusplus } #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */ diff --git a/boards/common/nucleo64/include/board.h b/boards/common/nucleo64/include/board.h index 4baf9db12a..f19f3e3ee6 100644 --- a/boards/common/nucleo64/include/board.h +++ b/boards/common/nucleo64/include/board.h @@ -35,18 +35,12 @@ extern "C" { * @{ */ #if defined(CPU_MODEL_STM32F302R8) || defined(CPU_MODEL_STM32L433RC) -#define LED0_PORT GPIOB -#define LED0_PIN GPIO_PIN(PORT_B, 13) -#define LED0_MASK (1 << 13) +#define LED0_PIN_NUM 13 +#define LED0_PORT_NUM PORT_B #else -#define LED0_PORT GPIOA -#define LED0_PIN GPIO_PIN(PORT_A, 5) -#define LED0_MASK (1 << 5) +#define LED0_PIN_NUM 5 +#define LED0_PORT_NUM PORT_A #endif - -#define LED0_ON (LED0_PORT->BSRR = LED0_MASK) -#define LED0_OFF (LED0_PORT->BSRR = (LED0_MASK << 16)) -#define LED0_TOGGLE (LED0_PORT->ODR ^= LED0_MASK) /** @} */ /** @@ -97,5 +91,7 @@ static const motor_driver_config_t motor_driver_config[] = { } #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */ diff --git a/boards/common/stm32/include/stm32_leds.h b/boards/common/stm32/include/stm32_leds.h new file mode 100644 index 0000000000..6833f44f50 --- /dev/null +++ b/boards/common/stm32/include/stm32_leds.h @@ -0,0 +1,157 @@ +/* + * Copyright (C) 2022 Otto-von-Guericke-Universität Magdeburg + * + * This file is subject to the terms and conditions of the GNU Lesser + * General Public License v2.1. See the file LICENSE in the top level + * directory for more details. + */ + +/** + * @ingroup boards_common_stm32 + * @brief Common LED macros + * @{ + * + * @file + * @brief Common LED macros + * + * @author Marian Buschsieweke + * + * This idea is that STM32 boards only define the pin and port number of LEDs + * and this header provides the rest of the defines + */ + +#ifndef STM32_LEDS_H +#define STM32_LEDS_H + +/* GPIO_PORT() macro. This define even works when GPIO LL is not in used */ +#include "gpio_ll_arch.h" +#include "kernel_defines.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @name Common LED pin definitions for STM32 boards + * @{ + */ +#if defined(LED0_PORT_NUM) && defined (LED0_PIN_NUM) +# define LED0_PORT ((GPIO_TypeDef *)GPIO_PORT(LED0_PORT_NUM)) +# define LED0_PIN GPIO_PIN(LED0_PORT_NUM, LED0_PIN_NUM) +# define LED0_MASK (1 << LED0_PIN_NUM) +# if IS_ACTIVE(LED_0_IS_INVERTED) +# define LED0_ON (LED0_PORT->BSRR = LED0_MASK) +# define LED0_OFF (LED0_PORT->BSRR = (LED0_MASK << 16)) +# else +# define LED0_ON (LED0_PORT->BSRR = (LED0_MASK << 16)) +# define LED0_OFF (LED0_PORT->BSRR = LED0_MASK) +# endif +# define LED0_TOGGLE (LED0_PORT->ODR ^= LED0_MASK) +#endif + +#if defined(LED1_PORT_NUM) && defined (LED1_PIN_NUM) +# define LED1_PORT ((GPIO_TypeDef *)GPIO_PORT(LED1_PORT_NUM)) +# define LED1_PIN GPIO_PIN(LED1_PORT_NUM, LED1_PIN_NUM) +# define LED1_MASK (1 << LED1_PIN_NUM) +# if IS_ACTIVE(LED_1_IS_INVERTED) +# define LED1_ON (LED1_PORT->BSRR = LED1_MASK) +# define LED1_OFF (LED1_PORT->BSRR = (LED1_MASK << 16)) +# else +# define LED1_ON (LED1_PORT->BSRR = (LED1_MASK << 16)) +# define LED1_OFF (LED1_PORT->BSRR = LED1_MASK) +# endif +# define LED1_TOGGLE (LED1_PORT->ODR ^= LED1_MASK) +#endif + +#if defined(LED2_PORT_NUM) && defined (LED2_PIN_NUM) +# define LED2_PORT ((GPIO_TypeDef *)GPIO_PORT(LED2_PORT_NUM)) +# define LED2_PIN GPIO_PIN(LED2_PORT_NUM, LED2_PIN_NUM) +# define LED2_MASK (1 << LED2_PIN_NUM) +# if IS_ACTIVE(LED_2_IS_INVERTED) +# define LED2_ON (LED2_PORT->BSRR = LED2_MASK) +# define LED2_OFF (LED2_PORT->BSRR = (LED2_MASK << 16)) +# else +# define LED2_ON (LED2_PORT->BSRR = (LED2_MASK << 16)) +# define LED2_OFF (LED2_PORT->BSRR = LED2_MASK) +# endif +# define LED2_TOGGLE (LED2_PORT->ODR ^= LED2_MASK) +#endif + +#if defined(LED3_PORT_NUM) && defined (LED3_PIN_NUM) +# define LED3_PORT ((GPIO_TypeDef *)GPIO_PORT(LED3_PORT_NUM)) +# define LED3_PIN GPIO_PIN(LED3_PORT_NUM, LED3_PIN_NUM) +# define LED3_MASK (1 << LED3_PIN_NUM) +# if IS_ACTIVE(LED_3_IS_INVERTED) +# define LED3_ON (LED3_PORT->BSRR = LED3_MASK) +# define LED3_OFF (LED3_PORT->BSRR = (LED3_MASK << 16)) +# else +# define LED3_ON (LED3_PORT->BSRR = (LED3_MASK << 16)) +# define LED3_OFF (LED3_PORT->BSRR = LED3_MASK) +# endif +# define LED3_TOGGLE (LED3_PORT->ODR ^= LED3_MASK) +#endif + +#if defined(LED4_PORT_NUM) && defined (LED4_PIN_NUM) +# define LED4_PORT ((GPIO_TypeDef *)GPIO_PORT(LED4_PORT_NUM)) +# define LED4_PIN GPIO_PIN(LED4_PORT_NUM, LED4_PIN_NUM) +# define LED4_MASK (1 << LED4_PIN_NUM) +# if IS_ACTIVE(LED_4_IS_INVERTED) +# define LED4_ON (LED4_PORT->BSRR = LED4_MASK) +# define LED4_OFF (LED4_PORT->BSRR = (LED4_MASK << 16)) +# else +# define LED4_ON (LED4_PORT->BSRR = (LED4_MASK << 16)) +# define LED4_OFF (LED4_PORT->BSRR = LED4_MASK) +# endif +# define LED4_TOGGLE (LED4_PORT->ODR ^= LED4_MASK) +#endif + +#if defined(LED5_PORT_NUM) && defined (LED5_PIN_NUM) +# define LED5_PORT ((GPIO_TypeDef *)GPIO_PORT(LED5_PORT_NUM)) +# define LED5_PIN GPIO_PIN(LED5_PORT_NUM, LED5_PIN_NUM) +# define LED5_MASK (1 << LED5_PIN_NUM) +# if IS_ACTIVE(LED_5_IS_INVERTED) +# define LED5_ON (LED5_PORT->BSRR = LED5_MASK) +# define LED5_OFF (LED5_PORT->BSRR = (LED5_MASK << 16)) +# else +# define LED5_ON (LED5_PORT->BSRR = (LED5_MASK << 16)) +# define LED5_OFF (LED5_PORT->BSRR = LED5_MASK) +# endif +# define LED5_TOGGLE (LED5_PORT->ODR ^= LED5_MASK) +#endif + +#if defined(LED6_PORT_NUM) && defined (LED6_PIN_NUM) +# define LED6_PORT ((GPIO_TypeDef *)GPIO_PORT(LED6_PORT_NUM)) +# define LED6_PIN GPIO_PIN(LED6_PORT_NUM, LED6_PIN_NUM) +# define LED6_MASK (1 << LED6_PIN_NUM) +# if IS_ACTIVE(LED_6_IS_INVERTED) +# define LED6_ON (LED6_PORT->BSRR = LED6_MASK) +# define LED6_OFF (LED6_PORT->BSRR = (LED6_MASK << 16)) +# else +# define LED6_ON (LED6_PORT->BSRR = (LED6_MASK << 16)) +# define LED6_OFF (LED6_PORT->BSRR = LED6_MASK) +# endif +# define LED6_TOGGLE (LED6_PORT->ODR ^= LED6_MASK) +#endif + +#if defined(LED7_PORT_NUM) && defined (LED7_PIN_NUM) +# define LED7_PORT ((GPIO_TypeDef *)GPIO_PORT(LED7_PORT_NUM)) +# define LED7_PIN GPIO_PIN(LED7_PORT_NUM, LED7_PIN_NUM) +# define LED7_MASK (1 << LED7_PIN_NUM) +# if IS_ACTIVE(LED_7_IS_INVERTED) +# define LED7_ON (LED7_PORT->BSRR = LED7_MASK) +# define LED7_OFF (LED7_PORT->BSRR = (LED7_MASK << 16)) +# else +# define LED7_ON (LED7_PORT->BSRR = (LED7_MASK << 16)) +# define LED7_OFF (LED7_PORT->BSRR = LED7_MASK) +# endif +# define LED7_TOGGLE (LED7_PORT->ODR ^= LED7_MASK) +#endif + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32_LEDS_H */ +/** @} */ diff --git a/boards/common/weact-f4x1cx/include/board.h b/boards/common/weact-f4x1cx/include/board.h index ffc32791b7..5f249a120e 100644 --- a/boards/common/weact-f4x1cx/include/board.h +++ b/boards/common/weact-f4x1cx/include/board.h @@ -40,13 +40,9 @@ extern "C" { * @name LED pin definition and handlers * @{ */ -#define LED0_PORT GPIOC -#define LED0_PIN GPIO_PIN(PORT_C, 13) -#define LED0_MASK (1 << 13) - -#define LED0_ON (LED0_PORT->BSRR = (LED0_MASK << 16)) -#define LED0_OFF (LED0_PORT->BSRR = (LED0_MASK << 0)) -#define LED0_TOGGLE (LED0_PORT->ODR ^= LED0_MASK) +#define LED0_PIN_NUM 13 +#define LED0_PORT_NUM PORT_C +#define LED0_IS_INVERTED 1 /** @} */ /** @@ -85,5 +81,7 @@ extern mtd_dev_t *mtd0; } #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */ diff --git a/boards/f4vi1/include/board.h b/boards/f4vi1/include/board.h index 3cfb39b2aa..7b84a45af3 100644 --- a/boards/f4vi1/include/board.h +++ b/boards/f4vi1/include/board.h @@ -31,31 +31,21 @@ extern "C" { * @name LED pin definitions and handlers * @{ */ -#define LED0_PIN GPIO_PIN(PORT_A, 1) -#define LED1_PIN GPIO_PIN(PORT_A, 3) -#define LED2_PIN GPIO_PIN(PORT_A, 2) +#define LED0_PIN_NUM 1 +#define LED0_PORT_NUM PORT_A -#define LED_PORT GPIOA -#define LED0_MASK (1 << 1) -#define LED1_MASK (1 << 3) -#define LED2_MASK (1 << 2) +#define LED1_PIN_NUM 3 +#define LED1_PORT_NUM PORT_A -#define LED0_ON (LED_PORT->BSRR = LED0_MASK) -#define LED0_OFF (LED_PORT->BSRR = (LED0_MASK << 16)) -#define LED0_TOGGLE (LED_PORT->ODR ^= LED0_MASK) - -#define LED1_ON (LED_PORT->BSRR = LED1_MASK) -#define LED1_OFF (LED_PORT->BSRR = (LED1_MASK << 16)) -#define LED1_TOGGLE (LED_PORT->ODR ^= LED1_MASK) - -#define LED2_ON (LED_PORT->BSRR = LED2_MASK) -#define LED2_OFF (LED_PORT->BSRR = (LED2_MASK << 16)) -#define LED2_TOGGLE (LED_PORT->ODR ^= LED2_MASK) +#define LED2_PIN_NUM 2 +#define LED2_PORT_NUM PORT_A /** @} */ #ifdef __cplusplus } #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */ diff --git a/boards/limifrog-v1/include/board.h b/boards/limifrog-v1/include/board.h index c6170d036d..ebca70c1f8 100644 --- a/boards/limifrog-v1/include/board.h +++ b/boards/limifrog-v1/include/board.h @@ -32,14 +32,8 @@ extern "C" { * @name LED pin definitions and handlers * @{ */ -#define LED0_PIN GPIO_PIN(PORT_C, 3) - -#define LED0_PORT (GPIOC) -#define LED0_MASK (1 << 3) - -#define LED0_ON (LED0_PORT->BSRR = LED0_MASK) -#define LED0_OFF (LED0_PORT->BSRR = (LED0_MASK << 16)) -#define LED0_TOGGLE (LED0_PORT->ODR ^= LED0_MASK) +#define LED0_PIN_NUM 3 +#define LED0_PORT_NUM PORT_C /** @} */ /** @@ -61,5 +55,7 @@ extern "C" { } #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */ diff --git a/boards/lobaro-lorabox/include/board.h b/boards/lobaro-lorabox/include/board.h index ce195474bb..23f2b1f5d2 100644 --- a/boards/lobaro-lorabox/include/board.h +++ b/boards/lobaro-lorabox/include/board.h @@ -37,13 +37,9 @@ extern "C" { * @name LED pin definitions and handlers * @{ */ -#define LED0_PORT GPIOA -#define LED0_PIN GPIO_PIN(PORT_A, 1) -#define LED0_MASK (1 << 1) - -#define LED0_ON (LED0_PORT->BSRR = (LED0_MASK << 16)) -#define LED0_OFF (LED0_PORT->BSRR = LED0_MASK) -#define LED0_TOGGLE (LED0_PORT->ODR ^= LED0_MASK) +#define LED0_PIN_NUM 1 +#define LED0_PORT_NUM PORT_A +#define LED0_IS_INVERTED 1 #define EN3V3_PORT GPIOA #define EN3V3_PIN GPIO_PIN(PORT_A, 11) @@ -72,5 +68,7 @@ extern "C" { } #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */ diff --git a/boards/lora-e5-dev/include/board.h b/boards/lora-e5-dev/include/board.h index a75c862f5e..66dae373cb 100644 --- a/boards/lora-e5-dev/include/board.h +++ b/boards/lora-e5-dev/include/board.h @@ -46,12 +46,8 @@ extern void lora_e5_dev_sx126x_set_rf_mode(sx126x_t *dev, sx126x_rf_mode_t rf_mo * @name LED pin definitions and handlers * @{ */ -#define LED0_PORT GPIOB -#define LED0_PIN GPIO_PIN(PORT_B, 5) -#define LED0_MASK (1 << 5) -#define LED0_OFF (LED0_PORT->BSRR = LED0_MASK) -#define LED0_ON (LED0_PORT->BSRR = (LED0_MASK << 5)) -#define LED0_TOGGLE (LED0_PORT->ODR ^= LED0_MASK) +#define LED0_PORT_NUM PORT_B +#define LED0_PIN_NUM 5 /** @} */ /** @@ -99,5 +95,7 @@ extern void lora_e5_dev_sx126x_set_rf_mode(sx126x_t *dev, sx126x_rf_mode_t rf_mo } #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */ diff --git a/boards/maple-mini/include/board.h b/boards/maple-mini/include/board.h index 982a23e595..237c5fae5d 100644 --- a/boards/maple-mini/include/board.h +++ b/boards/maple-mini/include/board.h @@ -36,14 +36,8 @@ extern "C" { * @name Macros for controlling the on-board LEDs. * @{ */ -#define LED0_PIN GPIO_PIN(PORT_B, 1) - -#define LED_PORT GPIOB -#define LED0_MASK (1 << 1) - -#define LED0_ON (LED_PORT->BSRR = LED0_MASK) -#define LED0_OFF (LED_PORT->BRR = LED0_MASK) -#define LED0_TOGGLE (LED_PORT->ODR ^= LED0_MASK) +#define LED0_PIN_NUM 1 +#define LED0_PORT_NUM PORT_B /** @} */ /** @@ -63,5 +57,7 @@ extern "C" { } #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */ diff --git a/boards/msbiot/include/board.h b/boards/msbiot/include/board.h index 4aaecb1d0a..493bc745bd 100644 --- a/boards/msbiot/include/board.h +++ b/boards/msbiot/include/board.h @@ -48,26 +48,14 @@ extern "C" { * @name LED pin definitions and handlers * @{ */ -#define LED0_PIN GPIO_PIN(PORT_B, 8) /**< Pin of red LED */ -#define LED1_PIN GPIO_PIN(PORT_B, 14) /**< Pin of yellow LED */ -#define LED2_PIN GPIO_PIN(PORT_B, 15) /**< Pin of green LED */ +#define LED0_PIN_NUM 8 /**< Pin number of red LED */ +#define LED0_PORT_NUM PORT_B /**< Port number of red LED */ -#define LED_PORT GPIOB /**< GPIO port LEDs are connected to */ -#define LED0_MASK (1 << 8) /**< Bitmask to address red LED in @ref LED_PORT */ -#define LED1_MASK (1 << 14) /**< Bitmask to address yellow LED in @ref LED_PORT */ -#define LED2_MASK (1 << 15) /**< Bitmask to address green LED in @ref LED_PORT */ +#define LED1_PIN_NUM 14 /**< Pin number of yellow LED */ +#define LED1_PORT_NUM PORT_B /**< Port number of yellow LED */ -#define LED0_ON (LED_PORT->BSRR = LED0_MASK) /**< Turn red LED on */ -#define LED0_OFF (LED_PORT->BSRR = (LED0_MASK << 16)) /**< Turn red LED off */ -#define LED0_TOGGLE (LED_PORT->ODR ^= LED0_MASK) /**< Toggle red LED */ - -#define LED1_ON (LED_PORT->BSRR = LED1_MASK) /**< Turn yellow LED on */ -#define LED1_OFF (LED_PORT->BSRR = (LED1_MASK << 16)) /**< Turn yellow LED off */ -#define LED1_TOGGLE (LED_PORT->ODR ^= LED1_MASK) /**< Toggle yellow LED */ - -#define LED2_ON (LED_PORT->BSRR = LED2_MASK) /**< Turn green LED on */ -#define LED2_OFF (LED_PORT->BSRR = (LED2_MASK << 16)) /**< Turn green LED off */ -#define LED2_TOGGLE (LED_PORT->ODR ^= LED2_MASK) /**< Toggle green LED */ +#define LED2_PIN_NUM 15 /**< Pin number of green LED */ +#define LED2_PORT_NUM PORT_B /**< Port number of green LED */ /** @} */ /** @@ -82,5 +70,7 @@ extern "C" { } #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */ diff --git a/boards/nucleo-wl55jc/include/board.h b/boards/nucleo-wl55jc/include/board.h index 7f20224a16..98be19149a 100644 --- a/boards/nucleo-wl55jc/include/board.h +++ b/boards/nucleo-wl55jc/include/board.h @@ -48,26 +48,14 @@ extern void nucleo_wl55jc_sx126x_set_rf_mode(sx126x_t *dev, sx126x_rf_mode_t rf_ * @name LED pin definitions and handlers * @{ */ -#define LED0_PORT GPIOB -#define LED0_PIN GPIO_PIN(PORT_B, 15) -#define LED0_MASK (1 << 15) -#define LED0_ON (LED0_PORT->BSRR = LED0_MASK) -#define LED0_OFF (LED0_PORT->BSRR = (LED0_MASK << 16)) -#define LED0_TOGGLE (LED0_PORT->ODR ^= LED0_MASK) +#define LED0_PIN_NUM 15 +#define LED0_PORT_NUM PORT_B -#define LED1_PORT GPIOB -#define LED1_PIN GPIO_PIN(PORT_B, 9) -#define LED1_MASK (1 << 9) -#define LED1_ON (LED0_PORT->BSRR = LED1_MASK) -#define LED1_OFF (LED0_PORT->BSRR = (LED1_MASK << 16)) -#define LED1_TOGGLE (LED0_PORT->ODR ^= LED1_MASK) +#define LED1_PIN_NUM 9 +#define LED1_PORT_NUM PORT_B -#define LED2_PORT GPIOB -#define LED2_PIN GPIO_PIN(PORT_B, 11) -#define LED2_MASK (1 << 11) -#define LED2_ON (LED0_PORT->BSRR = LED2_MASK) -#define LED2_OFF (LED0_PORT->BSRR = (LED2_MASK << 16)) -#define LED2_TOGGLE (LED0_PORT->ODR ^= LED2_MASK) +#define LED2_PIN_NUM 11 +#define LED2_PORT_NUM PORT_B /** @} */ /** @@ -97,5 +85,7 @@ extern void nucleo_wl55jc_sx126x_set_rf_mode(sx126x_t *dev, sx126x_rf_mode_t rf_ } #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */ diff --git a/boards/nz32-sc151/include/board.h b/boards/nz32-sc151/include/board.h index 668551f69a..943e8c5f4d 100644 --- a/boards/nz32-sc151/include/board.h +++ b/boards/nz32-sc151/include/board.h @@ -32,18 +32,15 @@ extern "C" { * @name User LED pin definitions and handlers * @{ */ -#define LED0_PIN GPIO_PIN(PORT_B, 2) - -#define LED0_MASK (1 << 2) - -#define LED0_ON (GPIOB->BSRR = LED0_MASK) -#define LED0_OFF (GPIOB->BSRR = (LED0_MASK << 16)) -#define LED0_TOGGLE (GPIOB->ODR ^= LED0_MASK) +#define LED0_PIN_NUM 2 +#define LED0_PORT_NUM PORT_B /** @} */ #ifdef __cplusplus } #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */ diff --git a/boards/olimexino-stm32/include/board.h b/boards/olimexino-stm32/include/board.h index 00441d719c..c0d8888278 100644 --- a/boards/olimexino-stm32/include/board.h +++ b/boards/olimexino-stm32/include/board.h @@ -38,21 +38,11 @@ extern "C" { * @name LED pin definitions and handlers * @{ */ -#define LED0_PORT GPIOA -#define LED0_PIN GPIO_PIN(PORT_A, 1) -#define LED0_MASK (1 << 1) +#define LED0_PIN_NUM 1 +#define LED0_PORT_NUM PORT_A -#define LED1_PORT GPIOA -#define LED1_PIN GPIO_PIN(PORT_A, 5) -#define LED1_MASK (1 << 5) - -#define LED0_ON (LED0_PORT->BSRR = LED0_MASK) -#define LED0_OFF (LED0_PORT->BSRR = (LED0_MASK << 16)) -#define LED0_TOGGLE (LED0_PORT->ODR ^= LED0_MASK) - -#define LED1_ON (LED1_PORT->BSRR = LED1_MASK) -#define LED1_OFF (LED1_PORT->BSRR = (LED1_MASK << 16)) -#define LED1_TOGGLE (LED1_PORT->ODR ^= LED1_MASK) +#define LED1_PIN_NUM 5 +#define LED1_PORT_NUM PORT_A #define LED_PANIC LED0_ON /** @} */ @@ -69,5 +59,7 @@ extern "C" { } #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */ diff --git a/boards/opencm904/include/board.h b/boards/opencm904/include/board.h index 6db0ca7e54..e28151887d 100644 --- a/boards/opencm904/include/board.h +++ b/boards/opencm904/include/board.h @@ -36,14 +36,8 @@ extern "C" { * @name Macros for controlling the on-board LED. * @{ */ -#define LED0_PIN GPIO_PIN(PORT_B, 9) - -#define LED_PORT GPIOB -#define LED0_MASK (1 << 9) - -#define LED0_ON (LED_PORT->BRR = LED0_MASK) -#define LED0_OFF (LED_PORT->BSRR = LED0_MASK) -#define LED0_TOGGLE (LED_PORT->ODR ^= LED0_MASK) +#define LED0_PIN_NUM 9 +#define LED0_PORT_NUM PORT_B /** @} */ /** @@ -81,5 +75,7 @@ extern "C" { } #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */ diff --git a/boards/p-l496g-cell02/include/board.h b/boards/p-l496g-cell02/include/board.h index e45d4477c1..2b62476016 100644 --- a/boards/p-l496g-cell02/include/board.h +++ b/boards/p-l496g-cell02/include/board.h @@ -31,19 +31,11 @@ extern "C" { * @name LED pin definitions and handlers * @{ */ -#define LED0_PIN GPIO_PIN(PORT_A, 5) -#define LED0_MASK (1 << 5) +#define LED0_PIN_NUM 5 +#define LED0_PORT_NUM PORT_A -#define LED0_ON (GPIOA->BSRR = LED0_MASK) -#define LED0_OFF (GPIOA->BSRR = (LED0_MASK << 16)) -#define LED0_TOGGLE (GPIOA->ODR ^= LED0_MASK) - -#define LED1_PIN GPIO_PIN(PORT_B, 13) -#define LED1_MASK (1 << 13) - -#define LED1_ON (GPIOB->BSRR = LED1_MASK) -#define LED1_OFF (GPIOB->BSRR = (LED1_MASK << 16)) -#define LED1_TOGGLE (GPIOB->ODR ^= LED1_MASK) +#define LED1_PIN_NUM 13 +#define LED1_PORT_NUM PORT_B /** @} */ /** @@ -70,5 +62,7 @@ extern "C" { } #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */ diff --git a/boards/p-nucleo-wb55/include/board.h b/boards/p-nucleo-wb55/include/board.h index e4a7eeb3be..3864003aff 100644 --- a/boards/p-nucleo-wb55/include/board.h +++ b/boards/p-nucleo-wb55/include/board.h @@ -29,26 +29,14 @@ extern "C" { * @name LED pin definitions and handlers * @{ */ -#define LED0_PORT GPIOB -#define LED0_PIN GPIO_PIN(PORT_B, 5) -#define LED0_MASK (1 << 5) -#define LED0_ON (LED0_PORT->BSRR = LED0_MASK) -#define LED0_OFF (LED0_PORT->BSRR = (LED0_MASK << 16)) -#define LED0_TOGGLE (LED0_PORT->ODR ^= LED0_MASK) +#define LED0_PIN_NUM 5 +#define LED0_PORT_NUM PORT_B -#define LED1_PORT GPIOB -#define LED1_PIN GPIO_PIN(PORT_B, 0) -#define LED1_MASK (1 << 0) -#define LED1_ON (LED0_PORT->BSRR = LED1_MASK) -#define LED1_OFF (LED0_PORT->BSRR = (LED1_MASK << 16)) -#define LED1_TOGGLE (LED0_PORT->ODR ^= LED1_MASK) +#define LED1_PIN_NUM 0 +#define LED1_PORT_NUM PORT_B -#define LED2_PORT GPIOB -#define LED2_PIN GPIO_PIN(PORT_B, 1) -#define LED2_MASK (1 << 1) -#define LED2_ON (LED0_PORT->BSRR = LED2_MASK) -#define LED2_OFF (LED0_PORT->BSRR = (LED2_MASK << 16)) -#define LED2_TOGGLE (LED0_PORT->ODR ^= LED2_MASK) +#define LED2_PIN_NUM 1 +#define LED2_PORT_NUM PORT_B /** @} */ /** @@ -67,5 +55,7 @@ extern "C" { } #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */ diff --git a/boards/pyboard/include/board.h b/boards/pyboard/include/board.h index 20dd0a85fc..a632f19b07 100644 --- a/boards/pyboard/include/board.h +++ b/boards/pyboard/include/board.h @@ -33,12 +33,8 @@ extern "C" { * @name LED pin definitions and handlers * @{ */ -#define LED0_PIN GPIO_PIN(PORT_B, 4) -#define LED0_MASK (1 << 4) - -#define LED0_ON (GPIOB->BSRR = LED0_MASK) -#define LED0_OFF (GPIOB->BSRR = (LED0_MASK << 16)) -#define LED0_TOGGLE (GPIOB->ODR ^= LED0_MASK) +#define LED0_PIN_NUM 4 +#define LED0_PORT_NUM PORT_B /** @} */ /** @@ -53,5 +49,7 @@ extern "C" { } #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */ diff --git a/boards/spark-core/include/board.h b/boards/spark-core/include/board.h index e911dcafba..c32e74a346 100644 --- a/boards/spark-core/include/board.h +++ b/boards/spark-core/include/board.h @@ -37,32 +37,17 @@ * @name Macros for controlling the on-board LEDs * @{ */ -#define LED0_PIN GPIO_PIN(PORT_A, 9) -#define LED1_PIN GPIO_PIN(PORT_A, 10) -#define LED2_PIN GPIO_PIN(PORT_A, 8) -#define LED3_PIN GPIO_PIN(PORT_A, 13) +#define LED0_PIN_NUM 9 +#define LED0_PORT_NUM PORT_A -#define LED_PORT (GPIOA) -#define LED0_MASK (1 << 9) -#define LED1_MASK (1 << 10) -#define LED2_MASK (1 << 8) -#define LED3_MASK (1 << 13) +#define LED1_PIN_NUM 10 +#define LED1_PORT_NUM PORT_A -#define LED0_ON (LED_PORT->BRR = LED0_MASK) -#define LED0_OFF (LED_PORT->BSRR = LED0_MASK) -#define LED0_TOGGLE (LED_PORT->ODR ^= LED0_MASK) +#define LED2_PIN_NUM 8 +#define LED2_PORT_NUM PORT_A -#define LED1_ON (LED_PORT->BRR = LED1_MASK) -#define LED1_OFF (LED_PORT->BSRR = LED1_MASK) -#define LED1_TOGGLE (LED_PORT->ODR ^= LED1_MASK) - -#define LED2_ON (LED_PORT->BRR = LED2_MASK) -#define LED2_OFF (LED_PORT->BSRR = LED2_MASK) -#define LED2_TOGGLE (LED_PORT->ODR ^= LED2_MASK) - -#define LED3_ON (LED_PORT->BRR = LED3_MASK) -#define LED3_OFF (LED_PORT->BSRR = LED3_MASK) -#define LED3_TOGGLE (LED_PORT->ODR ^= LED3_MASK) +#define LED3_PIN_NUM 13 +#define LED3_PORT_NUM PORT_A /** @} */ /** @@ -94,5 +79,7 @@ } /* end extern "C" */ #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */ diff --git a/boards/stm32f030f4-demo/include/board.h b/boards/stm32f030f4-demo/include/board.h index a43e795a00..75aa6bb17f 100644 --- a/boards/stm32f030f4-demo/include/board.h +++ b/boards/stm32f030f4-demo/include/board.h @@ -39,18 +39,16 @@ extern "C" { * @name LED pin definitions and handlers * @{ */ -#define LED0_PORT GPIOA -#define LED0_PIN GPIO_PIN(PORT_A, 4) -#define LED0_MASK (1 << 4) - -#define LED0_ON (LED0_PORT->BSRR = (LED0_MASK << 16)) -#define LED0_OFF (LED0_PORT->BSRR = (LED0_MASK << 0)) -#define LED0_TOGGLE (LED0_PORT->ODR ^= LED0_MASK) +#define LED0_PIN_NUM 4 +#define LED0_PORT_NUM PORT_A +#define LED0_IS_INVERTED 1 /** @} */ #ifdef __cplusplus } #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */ diff --git a/boards/stm32f0discovery/include/board.h b/boards/stm32f0discovery/include/board.h index a251c02252..9386a47019 100644 --- a/boards/stm32f0discovery/include/board.h +++ b/boards/stm32f0discovery/include/board.h @@ -30,20 +30,11 @@ extern "C" { * @name Macros for controlling the on-board LEDs. * @{ */ -#define LED0_PIN GPIO_PIN(PORT_C, 9) -#define LED1_PIN GPIO_PIN(PORT_C, 8) +#define LED0_PIN_NUM 9 +#define LED0_PORT_NUM PORT_C -#define LED_PORT GPIOC -#define LED0_MASK (1 << 9) -#define LED1_MASK (1 << 8) - -#define LED0_ON (LED_PORT->BSRR = LED0_MASK) -#define LED0_OFF (LED_PORT->BRR = LED0_MASK) -#define LED0_TOGGLE (LED_PORT->ODR ^= LED0_MASK) - -#define LED1_ON (LED_PORT->BSRR = LED1_MASK) -#define LED1_OFF (LED_PORT->BRR = LED1_MASK) -#define LED1_TOGGLE (LED_PORT->ODR ^= LED1_MASK) +#define LED1_PIN_NUM 8 +#define LED1_PORT_NUM PORT_C /** @} */ /** @@ -58,5 +49,7 @@ extern "C" { } #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */ diff --git a/boards/stm32f3discovery/include/board.h b/boards/stm32f3discovery/include/board.h index 384f6edf26..b6271d930a 100644 --- a/boards/stm32f3discovery/include/board.h +++ b/boards/stm32f3discovery/include/board.h @@ -30,56 +30,29 @@ extern "C" { * @name Macros for controlling the on-board LEDs. * @{ */ -#define LED0_PIN GPIO_PIN(PORT_E, 9) -#define LED1_PIN GPIO_PIN(PORT_E, 8) -#define LED2_PIN GPIO_PIN(PORT_E, 10) -#define LED3_PIN GPIO_PIN(PORT_E, 15) -#define LED4_PIN GPIO_PIN(PORT_E, 11) -#define LED5_PIN GPIO_PIN(PORT_E, 14) -#define LED6_PIN GPIO_PIN(PORT_E, 12) -#define LED7_PIN GPIO_PIN(PORT_E, 13) +#define LED0_PIN_NUM 9 +#define LED0_PORT_NUM PORT_E -#define LED_PORT GPIOE -#define LED0_MASK (1 << 9) -#define LED1_MASK (1 << 8) -#define LED2_MASK (1 << 10) -#define LED3_MASK (1 << 15) -#define LED4_MASK (1 << 11) -#define LED5_MASK (1 << 14) -#define LED6_MASK (1 << 12) -#define LED7_MASK (1 << 13) +#define LED1_PIN_NUM 8 +#define LED1_PORT_NUM PORT_E -#define LED0_ON (LED_PORT->BSRR = LED0_MASK) -#define LED0_OFF (LED_PORT->BSRR = (LED0_MASK << 16)) -#define LED0_TOGGLE (LED_PORT->ODR ^= LED0_MASK) +#define LED2_PIN_NUM 10 +#define LED2_PORT_NUM PORT_E -#define LED1_ON (LED_PORT->BSRR = LED1_MASK) -#define LED1_OFF (LED_PORT->BSRR = (LED1_MASK << 16)) -#define LED1_TOGGLE (LED_PORT->ODR ^= LED1_MASK) +#define LED3_PIN_NUM 15 +#define LED3_PORT_NUM PORT_E -#define LED2_ON (LED_PORT->BSRR = LED2_MASK) -#define LED2_OFF (LED_PORT->BSRR = (LED2_MASK << 16)) -#define LED2_TOGGLE (LED_PORT->ODR ^= LED2_MASK) +#define LED4_PIN_NUM 11 +#define LED4_PORT_NUM PORT_E -#define LED3_ON (LED_PORT->BSRR = LED3_MASK) -#define LED3_OFF (LED_PORT->BSRR = (LED3_MASK << 16)) -#define LED3_TOGGLE (LED_PORT->ODR ^= LED3_MASK) +#define LED5_PIN_NUM 14 +#define LED5_PORT_NUM PORT_E -#define LED4_ON (LED_PORT->BSRR = LED4_MASK) -#define LED4_OFF (LED_PORT->BSRR = (LED4_MASK << 16)) -#define LED4_TOGGLE (LED_PORT->ODR ^= LED4_MASK) +#define LED6_PIN_NUM 12 +#define LED6_PORT_NUM PORT_E -#define LED5_ON (LED_PORT->BSRR = LED5_MASK) -#define LED5_OFF (LED_PORT->BSRR = (LED5_MASK << 16)) -#define LED5_TOGGLE (LED_PORT->ODR ^= LED5_MASK) - -#define LED6_ON (LED_PORT->BSRR = LED6_MASK) -#define LED6_OFF (LED_PORT->BSRR = (LED6_MASK << 16)) -#define LED6_TOGGLE (LED_PORT->ODR ^= LED6_MASK) - -#define LED7_ON (LED_PORT->BSRR = LED7_MASK) -#define LED7_OFF (LED_PORT->BSRR = (LED7_MASK << 16)) -#define LED7_TOGGLE (LED_PORT->ODR ^= LED7_MASK) +#define LED7_PIN_NUM 13 +#define LED7_PORT_NUM PORT_E /** @} */ /** @@ -111,5 +84,7 @@ extern "C" { } #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */ diff --git a/boards/stm32f429i-disc1/include/board.h b/boards/stm32f429i-disc1/include/board.h index 3fcb6d1888..f81a9f1e56 100644 --- a/boards/stm32f429i-disc1/include/board.h +++ b/boards/stm32f429i-disc1/include/board.h @@ -30,19 +30,11 @@ extern "C" { * @name Macros for controlling the on-board LEDs. * @{ */ -#define LED0_PIN GPIO_PIN(PORT_G, 13) -#define LED1_PIN GPIO_PIN(PORT_G, 14) +#define LED0_PIN_NUM 13 +#define LED0_PORT_NUM PORT_G -#define LED0_MASK (1 << 13) -#define LED1_MASK (1 << 14) - -#define LED0_ON (GPIOG->BSRR = LED0_MASK) -#define LED0_OFF (GPIOG->BSRR = (LED0_MASK << 16)) -#define LED0_TOGGLE (GPIOG->ODR ^= LED0_MASK) - -#define LED1_ON (GPIOG->BSRR = LED1_MASK) -#define LED1_OFF (GPIOG->BSRR = (LED1_MASK << 16)) -#define LED1_TOGGLE (GPIOG->ODR ^= LED1_MASK) +#define LED1_PIN_NUM 14 +#define LED1_PORT_NUM PORT_G /** @} */ /** @@ -67,5 +59,7 @@ extern "C" { } #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */ diff --git a/boards/stm32f469i-disco/include/board.h b/boards/stm32f469i-disco/include/board.h index 0a190e4945..84ac6dadd4 100644 --- a/boards/stm32f469i-disco/include/board.h +++ b/boards/stm32f469i-disco/include/board.h @@ -30,36 +30,21 @@ extern "C" * @name Macros for controlling the on-board LEDs * @{ */ -#define LED0_PIN GPIO_PIN(PORT_G, 6) -#define LED1_PIN GPIO_PIN(PORT_D, 4) -#define LED2_PIN GPIO_PIN(PORT_D, 5) -#define LED3_PIN GPIO_PIN(PORT_K, 3) +#define LED0_PIN_NUM 6 +#define LED0_PORT_NUM PORT_G +#define LED0_IS_INVERTED 1 -#define LED0_PORT GPIOG -#define LED1_PORT GPIOD -#define LED2_PORT GPIOD -#define LED3_PORT GPIOK +#define LED1_PIN_NUM 4 +#define LED1_PORT_NUM PORT_D +#define LED1_IS_INVERTED 1 -#define LED0_MASK (1 << 6) -#define LED1_MASK (1 << 4) -#define LED2_MASK (1 << 5) -#define LED3_MASK (1 << 3) +#define LED2_PIN_NUM 5 +#define LED2_PORT_NUM PORT_D +#define LED2_IS_INVERTED 1 -#define LED0_ON (LED0_PORT->BSRR = (LED0_MASK << 16)) -#define LED0_OFF (LED0_PORT->BSRR = LED0_MASK) -#define LED0_TOGGLE (LED0_PORT->ODR ^= LED0_MASK) - -#define LED1_ON (LED1_PORT->BSRR = (LED1_MASK << 16)) -#define LED1_OFF (LED1_PORT->BSRR = LED1_MASK) -#define LED1_TOGGLE (LED1_PORT->ODR ^= LED1_MASK) - -#define LED2_ON (LED2_PORT->BSRR = (LED2_MASK << 16)) -#define LED2_OFF (LED2_PORT->BSRR = LED2_MASK) -#define LED2_TOGGLE (LED2_PORT->ODR ^= LED2_MASK) - -#define LED3_ON (LED3_PORT->BSRR = (LED3_MASK << 16)) -#define LED3_OFF (LED3_PORT->BSRR = LED3_MASK) -#define LED3_TOGGLE (LED3_PORT->ODR ^= LED3_MASK) +#define LED3_PIN_NUM 3 +#define LED3_PORT_NUM PORT_K +#define LED3_IS_INVERTED 1 /** @} */ /** @@ -74,5 +59,7 @@ extern "C" } #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */ diff --git a/boards/stm32f4discovery/include/board.h b/boards/stm32f4discovery/include/board.h index cde21219de..514290ae49 100644 --- a/boards/stm32f4discovery/include/board.h +++ b/boards/stm32f4discovery/include/board.h @@ -34,42 +34,21 @@ extern "C" { #define XTIMER_BACKOFF (10) /** @} */ -/** - * @name LED pin definitions - * @{ - */ -/** @} */ - /** * @name Macros for controlling the on-board LEDs. * @{ */ -#define LED0_PIN GPIO_PIN(PORT_D, 13) -#define LED1_PIN GPIO_PIN(PORT_D, 12) -#define LED2_PIN GPIO_PIN(PORT_D, 14) -#define LED3_PIN GPIO_PIN(PORT_D, 15) +#define LED0_PIN_NUM 13 +#define LED0_PORT_NUM PORT_D -#define LED_PORT GPIOD -#define LED0_MASK (1 << 13) -#define LED1_MASK (1 << 12) -#define LED2_MASK (1 << 14) -#define LED3_MASK (1 << 15) +#define LED1_PIN_NUM 12 +#define LED1_PORT_NUM PORT_D -#define LED0_ON (LED_PORT->BSRR = LED0_MASK) -#define LED0_OFF (LED_PORT->BSRR = (LED0_MASK << 16)) -#define LED0_TOGGLE (LED_PORT->ODR ^= LED0_MASK) +#define LED2_PIN_NUM 14 +#define LED2_PORT_NUM PORT_D -#define LED1_ON (LED_PORT->BSRR = LED1_MASK) -#define LED1_OFF (LED_PORT->BSRR = (LED1_MASK << 16)) -#define LED1_TOGGLE (LED_PORT->ODR ^= LED1_MASK) - -#define LED2_ON (LED_PORT->BSRR = LED2_MASK) -#define LED2_OFF (LED_PORT->BSRR = (LED2_MASK << 16)) -#define LED2_TOGGLE (LED_PORT->ODR ^= LED2_MASK) - -#define LED3_ON (LED_PORT->BSRR = LED3_MASK) -#define LED3_OFF (LED_PORT->BSRR = (LED3_MASK << 16)) -#define LED3_TOGGLE (LED_PORT->ODR ^= LED3_MASK) +#define LED3_PIN_NUM 15 +#define LED3_PORT_NUM PORT_D /** @} */ /** @@ -84,5 +63,7 @@ extern "C" { } #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */ diff --git a/boards/stm32f723e-disco/include/board.h b/boards/stm32f723e-disco/include/board.h index f27a2c543d..9e710af428 100644 --- a/boards/stm32f723e-disco/include/board.h +++ b/boards/stm32f723e-disco/include/board.h @@ -30,26 +30,14 @@ extern "C" { * @name Macros for controlling the on-board LEDs. * @{ */ -#define LED0_PIN GPIO_PIN(PORT_A, 5) -#define LED0_PORT GPIOA -#define LED0_MASK (1 << 5) -#define LED0_ON (LED0_PORT->BSRR = LED0_MASK) -#define LED0_OFF (LED0_PORT->BSRR = (LED0_MASK << 16)) -#define LED0_TOGGLE (LED0_PORT->ODR ^= LED0_MASK) +#define LED0_PIN_NUM 5 +#define LED0_PORT_NUM PORT_A -#define LED1_PIN GPIO_PIN(PORT_A, 7) -#define LED1_PORT GPIOA -#define LED1_MASK (1 << 7) -#define LED1_ON (LED1_PORT->BSRR = LED1_MASK) -#define LED1_OFF (LED1_PORT->BSRR = (LED1_MASK << 16)) -#define LED1_TOGGLE (LED1_PORT->ODR ^= LED1_MASK) +#define LED1_PIN_NUM 7 +#define LED1_PORT_NUM PORT_A -#define LED2_PIN GPIO_PIN(PORT_B, 1) -#define LED2_PORT GPIOB -#define LED2_MASK (1 << 1) -#define LED2_ON (LED2_PORT->BSRR = LED2_MASK) -#define LED2_OFF (LED2_PORT->BSRR = (LED2_MASK << 16)) -#define LED2_TOGGLE (LED2_PORT->ODR ^= LED2_MASK) +#define LED2_PIN_NUM 1 +#define LED2_PORT_NUM PORT_B /** @} */ /** @@ -75,5 +63,7 @@ extern "C" { } #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */ diff --git a/boards/stm32f769i-disco/include/board.h b/boards/stm32f769i-disco/include/board.h index 50190631a6..16f7552f7c 100644 --- a/boards/stm32f769i-disco/include/board.h +++ b/boards/stm32f769i-disco/include/board.h @@ -31,35 +31,17 @@ extern "C" { * @name Macros for controlling the on-board LEDs. * @{ */ -#define LED0_PIN GPIO_PIN(PORT_J, 13) -#define LED1_PIN GPIO_PIN(PORT_J, 5) -#define LED2_PIN GPIO_PIN(PORT_A, 12) -#define LED3_PIN GPIO_PIN(PORT_D, 4) +#define LED0_PIN_NUM 13 +#define LED0_PORT_NUM PORT_J -#define LED0_PORT GPIOJ -#define LED1_PORT GPIOJ -#define LED2_PORT GPIOA -#define LED3_PORT GPIOD -#define LED0_MASK (1 << 13) -#define LED1_MASK (1 << 5) -#define LED2_MASK (1 << 12) -#define LED3_MASK (1 << 4) +#define LED1_PIN_NUM 5 +#define LED1_PORT_NUM PORT_J -#define LED0_ON (LED0_PORT->BSRR = LED0_MASK) -#define LED0_OFF (LED0_PORT->BSRR = (LED0_MASK << 16)) -#define LED0_TOGGLE (LED0_PORT->ODR ^= LED0_MASK) +#define LED2_PIN_NUM 12 +#define LED2_PORT_NUM PORT_A -#define LED1_ON (LED1_PORT->BSRR = LED1_MASK) -#define LED1_OFF (LED1_PORT->BSRR = (LED1_MASK << 16)) -#define LED1_TOGGLE (LED1_PORT->ODR ^= LED1_MASK) - -#define LED2_ON (LED2_PORT->BSRR = LED2_MASK) -#define LED2_OFF (LED2_PORT->BSRR = (LED2_MASK << 16)) -#define LED2_TOGGLE (LED2_PORT->ODR ^= LED2_MASK) - -#define LED3_ON (LED3_PORT->BSRR = LED3_MASK) -#define LED3_OFF (LED3_PORT->BSRR = (LED3_MASK << 16)) -#define LED3_TOGGLE (LED3_PORT->ODR ^= LED3_MASK) +#define LED3_PIN_NUM 4 +#define LED3_PORT_NUM PORT_D /** @} */ /** @@ -74,5 +56,7 @@ extern "C" { } #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */ diff --git a/boards/stm32g0316-disco/include/board.h b/boards/stm32g0316-disco/include/board.h index 1ba35e7644..a52981a303 100644 --- a/boards/stm32g0316-disco/include/board.h +++ b/boards/stm32g0316-disco/include/board.h @@ -28,19 +28,17 @@ extern "C" { #endif -#define LED0_PIN GPIO_PIN(PORT_A, 12) -#define LED0_MODE GPIO_OUT -#define LED0_MASK (1 << 12) - -#define LED0_ON (GPIOA->BSRR = LED0_MASK) -#define LED0_OFF (GPIOA->BSRR = (LED0_MASK << 16)) -#define LED0_TOGGLE (GPIOA->ODR ^= LED0_MASK) +#define LED0_PIN_NUM 12 +#define LED0_PORT_NUM PORT_A #define BTN0_PIN GPIO_PIN(PORT_A, 0) #define BTN0_MODE GPIO_IN + #ifdef __cplusplus } #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */ diff --git a/boards/stm32l0538-disco/include/board.h b/boards/stm32l0538-disco/include/board.h index 377021d139..bbde0f619c 100644 --- a/boards/stm32l0538-disco/include/board.h +++ b/boards/stm32l0538-disco/include/board.h @@ -36,21 +36,11 @@ extern "C" { * @name Macros for controlling the on-board LEDs. * @{ */ -#define LED0_PIN GPIO_PIN(PORT_B, 4) -#define LED0_PORT GPIOB -#define LED0_MASK (1 << 4) +#define LED0_PIN_NUM 4 +#define LED0_PORT_NUM PORT_B -#define LED0_ON (LED0_PORT->BSRR = LED0_MASK) -#define LED0_OFF (LED0_PORT->BRR = LED0_MASK) -#define LED0_TOGGLE (LED0_PORT->ODR ^= LED0_MASK) - -#define LED1_PIN GPIO_PIN(PORT_A, 5) -#define LED1_PORT GPIOA -#define LED1_MASK (1 << 5) - -#define LED1_ON (LED1_PORT->BSRR = LED1_MASK) -#define LED1_OFF (LED1_PORT->BRR = LED1_MASK) -#define LED1_TOGGLE (LED1_PORT->ODR ^= LED1_MASK) +#define LED1_PIN_NUM 5 +#define LED1_PORT_NUM PORT_A /** @} */ /** @@ -66,5 +56,7 @@ extern "C" { } #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */ diff --git a/boards/stm32l476g-disco/include/board.h b/boards/stm32l476g-disco/include/board.h index 3355a8a1b6..46e931e63c 100644 --- a/boards/stm32l476g-disco/include/board.h +++ b/boards/stm32l476g-disco/include/board.h @@ -33,19 +33,11 @@ extern "C" { * @name LED pin definitions and handlers * @{ */ -#define LED0_PIN GPIO_PIN(PORT_B, 2) -#define LED0_MASK (1 << 2) +#define LED0_PIN_NUM 2 +#define LED0_PORT_NUM PORT_B -#define LED0_ON (GPIOB->BSRR = LED0_MASK) -#define LED0_OFF (GPIOB->BSRR = (LED0_MASK << 16)) -#define LED0_TOGGLE (GPIOB->ODR ^= LED0_MASK) - -#define LED1_PIN GPIO_PIN(PORT_E, 8) -#define LED1_MASK (1 << 8) - -#define LED1_ON (GPIOE->BSRR = LED1_MASK) -#define LED1_OFF (GPIOE->BSRR = (LED1_MASK << 16)) -#define LED1_TOGGLE (GPIOE->ODR ^= LED1_MASK) +#define LED1_PIN_NUM 8 +#define LED1_PORT_NUM PORT_E /** @} */ /** @@ -72,5 +64,7 @@ extern "C" { } #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */ diff --git a/boards/ublox-c030-u201/include/board.h b/boards/ublox-c030-u201/include/board.h index bef2783d65..a2475c68ce 100644 --- a/boards/ublox-c030-u201/include/board.h +++ b/boards/ublox-c030-u201/include/board.h @@ -33,26 +33,14 @@ extern "C" { * @name LED pin definitions and handlers * @{ */ -#define LED0_PIN GPIO_PIN(PORT_E, 3) -#define LED0_MASK (1 << 3) +#define LED0_PIN_NUM 3 +#define LED0_PORT_NUM PORT_E -#define LED0_ON (GPIOE->BSRR = LED0_MASK) -#define LED0_OFF (GPIOE->BSRR = (LED0_MASK << 16)) -#define LED0_TOGGLE (GPIOE->ODR ^= LED0_MASK) +#define LED1_PIN_NUM 4 +#define LED1_PORT_NUM PORT_E -#define LED1_PIN GPIO_PIN(PORT_E, 4) -#define LED1_MASK (1 << 4) - -#define LED1_ON (GPIOE->BSRR = LED1_MASK) -#define LED1_OFF (GPIOE->BSRR = (LED1_MASK << 16)) -#define LED1_TOGGLE (GPIOE->ODR ^= LED1_MASK) - -#define LED2_PIN GPIO_PIN(PORT_E, 1) -#define LED2_MASK (1 << 1) - -#define LED2_ON (GPIOE->BSRR = LED2_MASK) -#define LED2_OFF (GPIOE->BSRR = (LED2_MASK << 16)) -#define LED2_TOGGLE (GPIOE->ODR ^= LED2_MASK) +#define LED2_PIN_NUM 1 +#define LED2_PORT_NUM PORT_E /** @} */ /** @@ -99,5 +87,7 @@ extern "C" { } #endif +#include "stm32_leds.h" + #endif /* BOARD_H */ /** @} */