1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00

boards/stm32: use GPIO LL for LEDs

This fixes a race in `LED<NUM>_TOGGLE`, which is a read-copy-write
operation. Any access to a GPIO pin on the same GPIO port that
happens concurrently could result in data corruption. Using the
GPIO LL API, which is thread-safe, fixes the issue.

Note: The used GPIO LL functions will work even in when the GPIO LL
      module is not used.
This commit is contained in:
Marian Buschsieweke 2024-04-30 11:15:46 +02:00
parent 36e8526046
commit 97b91b4f8f
No known key found for this signature in database
GPG Key ID: 77AA882EC78084E6
43 changed files with 175 additions and 86 deletions

View File

@ -32,12 +32,15 @@ extern "C" {
* @{ * @{
*/ */
#define LED0_PIN_NUM 7 #define LED0_PIN_NUM 7
#define LED0_PORT GPIO_PORT_E /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_E #define LED0_PORT_NUM PORT_E
#define LED1_PIN_NUM 8 #define LED1_PIN_NUM 8
#define LED1_PORT GPIO_PORT_E /**< GPIO port of LED 1 */
#define LED1_PORT_NUM PORT_E #define LED1_PORT_NUM PORT_E
#define LED2_PIN_NUM 9 #define LED2_PIN_NUM 9
#define LED2_PORT GPIO_PORT_E /**< GPIO port of LED 2 */
#define LED2_PORT_NUM PORT_E #define LED2_PORT_NUM PORT_E
/** @} */ /** @} */

View File

@ -55,15 +55,19 @@ extern "C" {
* @{ * @{
*/ */
#define LED0_PIN_NUM 5 #define LED0_PIN_NUM 5
#define LED0_PORT GPIO_PORT_A /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_A #define LED0_PORT_NUM PORT_A
#define LED1_PIN_NUM 5 #define LED1_PIN_NUM 5
#define LED1_PORT GPIO_PORT_B /**< GPIO port of LED 1 */
#define LED1_PORT_NUM PORT_B #define LED1_PORT_NUM PORT_B
#define LED2_PIN_NUM 6 #define LED2_PIN_NUM 6
#define LED2_PORT GPIO_PORT_B /**< GPIO port of LED 2 */
#define LED2_PORT_NUM PORT_B #define LED2_PORT_NUM PORT_B
#define LED3_PIN_NUM 7 #define LED3_PIN_NUM 7
#define LED3_PORT GPIO_PORT_B /**< GPIO port of LED 3 */
#define LED3_PORT_NUM PORT_B #define LED3_PORT_NUM PORT_B
/** @} */ /** @} */

View File

@ -32,9 +32,11 @@ extern "C" {
* @{ * @{
*/ */
#define LED0_PIN_NUM 5 #define LED0_PIN_NUM 5
#define LED0_PORT GPIO_PORT_A /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_A #define LED0_PORT_NUM PORT_A
#define LED1_PIN_NUM 14 #define LED1_PIN_NUM 14
#define LED1_PORT GPIO_PORT_B /**< GPIO port of LED 1 */
#define LED1_PORT_NUM PORT_B #define LED1_PORT_NUM PORT_B
/** @} */ /** @} */

View File

@ -32,12 +32,15 @@ extern "C" {
* @{ * @{
*/ */
#define LED0_PIN_NUM 13 #define LED0_PIN_NUM 13
#define LED0_PORT GPIO_PORT_E /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_E #define LED0_PORT_NUM PORT_E
#define LED1_PIN_NUM 6 #define LED1_PIN_NUM 6
#define LED1_PORT GPIO_PORT_H /**< GPIO port of LED 1 */
#define LED1_PORT_NUM PORT_H #define LED1_PORT_NUM PORT_H
#define LED2_PIN_NUM 7 #define LED2_PIN_NUM 7
#define LED2_PORT GPIO_PORT_H /**< GPIO port of LED 2 */
#define LED2_PORT_NUM PORT_H #define LED2_PORT_NUM PORT_H
/** @} */ /** @} */

View File

@ -35,6 +35,7 @@ extern "C" {
* @name Macros for controlling the on-board LED. * @name Macros for controlling the on-board LED.
* @{ * @{
*/ */
#define LED0_PORT GPIO_PORT_B /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_B /**< GPIO Port 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 */ #define LED0_PIN_NUM 12 /**< Pin number the LED is connected to */
/** @} */ /** @} */

View File

@ -35,6 +35,7 @@ extern "C" {
* @name Macros for controlling the on-board LED. * @name Macros for controlling the on-board LED.
* @{ * @{
*/ */
#define LED0_PORT GPIO_PORT_B /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_B /**< GPIO Port 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 */ #define LED0_PIN_NUM (12) /**< Pin number the LED is connected to */
/** @} */ /** @} */

View File

@ -40,6 +40,7 @@ extern "C" {
* @{ * @{
*/ */
#define LED0_PIN_NUM 13 #define LED0_PIN_NUM 13
#define LED0_PORT GPIO_PORT_C /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_C #define LED0_PORT_NUM PORT_C
#define LED0_IS_INVERTED 1 #define LED0_IS_INVERTED 1
/** @} */ /** @} */

View File

@ -33,6 +33,7 @@ extern "C" {
* @{ * @{
*/ */
#ifndef LED0_PORT_NUM #ifndef LED0_PORT_NUM
#define LED0_PORT GPIO_PORT_C /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_C /**< GPIO Port number the LED is connected to */ #define LED0_PORT_NUM PORT_C /**< GPIO Port number the LED is connected to */
#endif #endif
#ifndef LED0_PIN_NUM #ifndef LED0_PIN_NUM

View File

@ -78,12 +78,15 @@ extern "C" {
* @{ * @{
*/ */
#define LED0_PIN_NUM 2 #define LED0_PIN_NUM 2
#define LED0_PORT GPIO_PORT_D /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_D #define LED0_PORT_NUM PORT_D
#define LED1_PIN_NUM 5 #define LED1_PIN_NUM 5
#define LED1_PORT GPIO_PORT_B /**< GPIO port of LED 1 */
#define LED1_PORT_NUM PORT_B #define LED1_PORT_NUM PORT_B
#define LED2_PIN_NUM 10 #define LED2_PIN_NUM 10
#define LED2_PORT GPIO_PORT_C /**< GPIO port of LED 2 */
#define LED2_PORT_NUM PORT_C #define LED2_PORT_NUM PORT_C
/** @} */ /** @} */

View File

@ -40,23 +40,29 @@ extern "C" {
#if defined(CPU_MODEL_STM32L496ZG) || defined(CPU_MODEL_STM32L4R5ZI) || \ #if defined(CPU_MODEL_STM32L496ZG) || defined(CPU_MODEL_STM32L4R5ZI) || \
defined(CPU_MODEL_STM32L552ZE) || defined(CPU_MODEL_STM32U575ZI) defined(CPU_MODEL_STM32L552ZE) || defined(CPU_MODEL_STM32U575ZI)
#define LED0_PIN_NUM 7 #define LED0_PIN_NUM 7
#define LED0_PORT GPIO_PORT_C /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_C #define LED0_PORT_NUM PORT_C
#else #else
#define LED0_PIN_NUM 0 #define LED0_PIN_NUM 0
#define LED0_PORT GPIO_PORT_B /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_B #define LED0_PORT_NUM PORT_B
#endif #endif
#define LED1_PIN_NUM 7 #define LED1_PIN_NUM 7
#define LED1_PORT GPIO_PORT_B /**< GPIO port of LED 1 */
#define LED1_PORT_NUM PORT_B #define LED1_PORT_NUM PORT_B
#if defined(CPU_MODEL_STM32L552ZE) #if defined(CPU_MODEL_STM32L552ZE)
#define LED2_PIN_NUM 9 #define LED2_PIN_NUM 9
#define LED2_PORT GPIO_PORT_A /**< GPIO port of LED 2 */
#define LED2_PORT_NUM PORT_A #define LED2_PORT_NUM PORT_A
#elif defined(CPU_MODEL_STM32U575ZI) #elif defined(CPU_MODEL_STM32U575ZI)
#define LED2_PIN_NUM 2 #define LED2_PIN_NUM 2
#define LED2_PORT GPIO_PORT_G /**< GPIO port of LED 2 */
#define LED2_PORT_NUM PORT_G #define LED2_PORT_NUM PORT_G
#else #else
#define LED2_PIN_NUM 14 #define LED2_PIN_NUM 14
#define LED2_PORT GPIO_PORT_B /**< GPIO port of LED 2 */
#define LED2_PORT_NUM PORT_B #define LED2_PORT_NUM PORT_B
#endif #endif
/** @} */ /** @} */

View File

@ -34,6 +34,7 @@ extern "C" {
* @{ * @{
*/ */
#define LED0_PIN_NUM 3 #define LED0_PIN_NUM 3
#define LED0_PORT GPIO_PORT_B /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_B #define LED0_PORT_NUM PORT_B
/** @} */ /** @} */

View File

@ -36,9 +36,11 @@ extern "C" {
*/ */
#if defined(CPU_MODEL_STM32F302R8) || defined(CPU_MODEL_STM32L433RC) #if defined(CPU_MODEL_STM32F302R8) || defined(CPU_MODEL_STM32L433RC)
#define LED0_PIN_NUM 13 #define LED0_PIN_NUM 13
#define LED0_PORT GPIO_PORT_B /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_B #define LED0_PORT_NUM PORT_B
#else #else
#define LED0_PIN_NUM 5 #define LED0_PIN_NUM 5
#define LED0_PORT GPIO_PORT_A /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_A #define LED0_PORT_NUM PORT_A
#endif #endif
/** @} */ /** @} */

View File

@ -16,16 +16,17 @@
* *
* @author Marian Buschsieweke <marian.buschsieweke@ovgu.de> * @author Marian Buschsieweke <marian.buschsieweke@ovgu.de>
* *
* This idea is that STM32 boards only define the pin and port number of LEDs * The idea is that STM32 boards only define the pin number, port number and
* and this header provides the rest of the defines * port of LEDs and this header provides the rest of the defines
*/ */
#ifndef STM32_LEDS_H #ifndef STM32_LEDS_H
#define STM32_LEDS_H #define STM32_LEDS_H
/* Using gpio_ll_arch for the gpio_port() function. This even works when /* Using gpio_ll_arch for GPIO access. On STM32, accessing the GPIO output
* GPIO LL is not in used */ * buffer via GPIO LL even works when the GPIO LL feature/module is not in
#include "gpio_ll_arch.h" * use */
#include "periph/gpio_ll.h"
#include "kernel_defines.h" #include "kernel_defines.h"
#ifdef __cplusplus #ifdef __cplusplus
@ -37,115 +38,107 @@ extern "C" {
* @{ * @{
*/ */
#if defined(LED0_PORT_NUM) && defined (LED0_PIN_NUM) #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_PIN GPIO_PIN(LED0_PORT_NUM, LED0_PIN_NUM) # define LED0_MASK (1 << LED0_PIN_NUM)
# define LED0_MASK (1 << LED0_PIN_NUM)
# if IS_ACTIVE(LED0_IS_INVERTED) # if IS_ACTIVE(LED0_IS_INVERTED)
# define LED0_ON (LED0_PORT->BSRR = (LED0_MASK << 16)) # define LED0_ON gpio_ll_clear(LED0_PORT, LED0_MASK)
# define LED0_OFF (LED0_PORT->BSRR = LED0_MASK) # define LED0_OFF gpio_ll_set(LED0_PORT, LED0_MASK)
# else # else
# define LED0_ON (LED0_PORT->BSRR = LED0_MASK) # define LED0_ON gpio_ll_set(LED0_PORT, LED0_MASK)
# define LED0_OFF (LED0_PORT->BSRR = (LED0_MASK << 16)) # define LED0_OFF gpio_ll_clear(LED0_PORT, LED0_MASK)
# endif # endif
# define LED0_TOGGLE (LED0_PORT->ODR ^= LED0_MASK) # define LED0_TOGGLE gpio_ll_toggle(LED0_PORT, LED0_MASK)
#endif #endif
#if defined(LED1_PORT_NUM) && defined (LED1_PIN_NUM) #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_PIN GPIO_PIN(LED1_PORT_NUM, LED1_PIN_NUM) # define LED1_MASK (1 << LED1_PIN_NUM)
# define LED1_MASK (1 << LED1_PIN_NUM)
# if IS_ACTIVE(LED1_IS_INVERTED) # if IS_ACTIVE(LED1_IS_INVERTED)
# define LED1_ON (LED1_PORT->BSRR = (LED1_MASK << 16)) # define LED1_ON gpio_ll_clear(LED1_PORT, LED1_MASK)
# define LED1_OFF (LED1_PORT->BSRR = LED1_MASK) # define LED1_OFF gpio_ll_set(LED1_PORT, LED1_MASK)
# else # else
# define LED1_ON (LED1_PORT->BSRR = LED1_MASK) # define LED1_ON gpio_ll_set(LED1_PORT, LED1_MASK)
# define LED1_OFF (LED1_PORT->BSRR = (LED1_MASK << 16)) # define LED1_OFF gpio_ll_clear(LED1_PORT, LED1_MASK)
# endif # endif
# define LED1_TOGGLE (LED1_PORT->ODR ^= LED1_MASK) # define LED1_TOGGLE gpio_ll_toggle(LED1_PORT, LED1_MASK)
#endif #endif
#if defined(LED2_PORT_NUM) && defined (LED2_PIN_NUM) #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_PIN GPIO_PIN(LED2_PORT_NUM, LED2_PIN_NUM) # define LED2_MASK (1 << LED2_PIN_NUM)
# define LED2_MASK (1 << LED2_PIN_NUM)
# if IS_ACTIVE(LED2_IS_INVERTED) # if IS_ACTIVE(LED2_IS_INVERTED)
# define LED2_ON (LED2_PORT->BSRR = (LED2_MASK << 16)) # define LED2_ON gpio_ll_clear(LED2_PORT, LED2_MASK)
# define LED2_OFF (LED2_PORT->BSRR = LED2_MASK) # define LED2_OFF gpio_ll_set(LED2_PORT, LED2_MASK)
# else # else
# define LED2_ON (LED2_PORT->BSRR = LED2_MASK) # define LED2_ON gpio_ll_set(LED2_PORT, LED2_MASK)
# define LED2_OFF (LED2_PORT->BSRR = (LED2_MASK << 16)) # define LED2_OFF gpio_ll_clear(LED2_PORT, LED2_MASK)
# endif # endif
# define LED2_TOGGLE (LED2_PORT->ODR ^= LED2_MASK) # define LED2_TOGGLE gpio_ll_toggle(LED2_PORT, LED2_MASK)
#endif #endif
#if defined(LED3_PORT_NUM) && defined (LED3_PIN_NUM) #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_PIN GPIO_PIN(LED3_PORT_NUM, LED3_PIN_NUM) # define LED3_MASK (1 << LED3_PIN_NUM)
# define LED3_MASK (1 << LED3_PIN_NUM)
# if IS_ACTIVE(LED3_IS_INVERTED) # if IS_ACTIVE(LED3_IS_INVERTED)
# define LED3_ON (LED3_PORT->BSRR = (LED3_MASK << 16)) # define LED3_ON gpio_ll_clear(LED3_PORT, LED3_MASK)
# define LED3_OFF (LED3_PORT->BSRR = LED3_MASK) # define LED3_OFF gpio_ll_set(LED3_PORT, LED3_MASK)
# else # else
# define LED3_ON (LED3_PORT->BSRR = LED3_MASK) # define LED3_ON gpio_ll_set(LED3_PORT, LED3_MASK)
# define LED3_OFF (LED3_PORT->BSRR = (LED3_MASK << 16)) # define LED3_OFF gpio_ll_clear(LED3_PORT, LED3_MASK)
# endif # endif
# define LED3_TOGGLE (LED3_PORT->ODR ^= LED3_MASK) # define LED3_TOGGLE gpio_ll_toggle(LED3_PORT, LED3_MASK)
#endif #endif
#if defined(LED4_PORT_NUM) && defined (LED4_PIN_NUM) #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_PIN GPIO_PIN(LED4_PORT_NUM, LED4_PIN_NUM) # define LED4_MASK (1 << LED4_PIN_NUM)
# define LED4_MASK (1 << LED4_PIN_NUM)
# if IS_ACTIVE(LED4_IS_INVERTED) # if IS_ACTIVE(LED4_IS_INVERTED)
# define LED4_ON (LED4_PORT->BSRR = (LED4_MASK << 16)) # define LED4_ON gpio_ll_clear(LED4_PORT, LED4_MASK)
# define LED4_OFF (LED4_PORT->BSRR = LED4_MASK) # define LED4_OFF gpio_ll_set(LED4_PORT, LED4_MASK)
# else # else
# define LED4_ON (LED4_PORT->BSRR = LED4_MASK) # define LED4_ON gpio_ll_set(LED4_PORT, LED4_MASK)
# define LED4_OFF (LED4_PORT->BSRR = (LED4_MASK << 16)) # define LED4_OFF gpio_ll_clear(LED4_PORT, LED4_MASK)
# endif # endif
# define LED4_TOGGLE (LED4_PORT->ODR ^= LED4_MASK) # define LED4_TOGGLE gpio_ll_toggle(LED4_PORT, LED4_MASK)
#endif #endif
#if defined(LED5_PORT_NUM) && defined (LED5_PIN_NUM) #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_PIN GPIO_PIN(LED5_PORT_NUM, LED5_PIN_NUM) # define LED5_MASK (1 << LED5_PIN_NUM)
# define LED5_MASK (1 << LED5_PIN_NUM)
# if IS_ACTIVE(LED5_IS_INVERTED) # if IS_ACTIVE(LED5_IS_INVERTED)
# define LED5_ON (LED5_PORT->BSRR = (LED5_MASK << 16)) # define LED5_ON gpio_ll_clear(LED5_PORT, LED5_MASK)
# define LED5_OFF (LED5_PORT->BSRR = LED5_MASK) # define LED5_OFF gpio_ll_set(LED5_PORT, LED5_MASK)
# else # else
# define LED5_ON (LED5_PORT->BSRR = LED5_MASK) # define LED5_ON gpio_ll_set(LED5_PORT, LED5_MASK)
# define LED5_OFF (LED5_PORT->BSRR = (LED5_MASK << 16)) # define LED5_OFF gpio_ll_clear(LED5_PORT, LED5_MASK)
# endif # endif
# define LED5_TOGGLE (LED5_PORT->ODR ^= LED5_MASK) # define LED5_TOGGLE gpio_ll_toggle(LED5_PORT, LED5_MASK)
#endif #endif
#if defined(LED6_PORT_NUM) && defined (LED6_PIN_NUM) #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_PIN GPIO_PIN(LED6_PORT_NUM, LED6_PIN_NUM) # define LED6_MASK (1 << LED6_PIN_NUM)
# define LED6_MASK (1 << LED6_PIN_NUM)
# if IS_ACTIVE(LED6_IS_INVERTED) # if IS_ACTIVE(LED6_IS_INVERTED)
# define LED6_ON (LED6_PORT->BSRR = (LED6_MASK << 16)) # define LED6_ON gpio_ll_clear(LED6_PORT, LED6_MASK)
# define LED6_OFF (LED6_PORT->BSRR = LED6_MASK) # define LED6_OFF gpio_ll_set(LED6_PORT, LED6_MASK)
# else # else
# define LED6_ON (LED6_PORT->BSRR = LED6_MASK) # define LED6_ON gpio_ll_set(LED6_PORT, LED6_MASK)
# define LED6_OFF (LED6_PORT->BSRR = (LED6_MASK << 16)) # define LED6_OFF gpio_ll_clear(LED6_PORT, LED6_MASK)
# endif # endif
# define LED6_TOGGLE (LED6_PORT->ODR ^= LED6_MASK) # define LED6_TOGGLE gpio_ll_toggle(LED6_PORT, LED6_MASK)
#endif #endif
#if defined(LED7_PORT_NUM) && defined (LED7_PIN_NUM) #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_PIN GPIO_PIN(LED7_PORT_NUM, LED7_PIN_NUM) # define LED7_MASK (1 << LED7_PIN_NUM)
# define LED7_MASK (1 << LED7_PIN_NUM)
# if IS_ACTIVE(LED7_IS_INVERTED) # if IS_ACTIVE(LED7_IS_INVERTED)
# define LED7_ON (LED7_PORT->BSRR = (LED7_MASK << 16)) # define LED7_ON gpio_ll_clear(LED7_PORT, LED7_MASK)
# define LED7_OFF (LED7_PORT->BSRR = LED7_MASK) # define LED7_OFF gpio_ll_set(LED7_PORT, LED7_MASK)
# else # else
# define LED7_ON (LED7_PORT->BSRR = LED7_MASK) # define LED7_ON gpio_ll_set(LED7_PORT, LED7_MASK)
# define LED7_OFF (LED7_PORT->BSRR = (LED7_MASK << 16)) # define LED7_OFF gpio_ll_clear(LED7_PORT, LED7_MASK)
# endif # endif
# define LED7_TOGGLE (LED7_PORT->ODR ^= LED7_MASK) # define LED7_TOGGLE gpio_ll_toggle(LED7_PORT, LED7_MASK)
#endif #endif
/** @} */ /** @} */

View File

@ -40,6 +40,7 @@ extern "C" {
* @{ * @{
*/ */
#define LED0_PIN_NUM 13 #define LED0_PIN_NUM 13
#define LED0_PORT GPIO_PORT_C /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_C #define LED0_PORT_NUM PORT_C
#define LED0_IS_INVERTED 1 #define LED0_IS_INVERTED 1
/** @} */ /** @} */

View File

@ -32,12 +32,15 @@ extern "C" {
* @{ * @{
*/ */
#define LED0_PIN_NUM 1 #define LED0_PIN_NUM 1
#define LED0_PORT GPIO_PORT_A /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_A #define LED0_PORT_NUM PORT_A
#define LED1_PIN_NUM 3 #define LED1_PIN_NUM 3
#define LED1_PORT GPIO_PORT_A /**< GPIO port of LED 1 */
#define LED1_PORT_NUM PORT_A #define LED1_PORT_NUM PORT_A
#define LED2_PIN_NUM 2 #define LED2_PIN_NUM 2
#define LED2_PORT GPIO_PORT_A /**< GPIO port of LED 2 */
#define LED2_PORT_NUM PORT_A #define LED2_PORT_NUM PORT_A
/** @} */ /** @} */

View File

@ -33,6 +33,7 @@ extern "C" {
* @{ * @{
*/ */
#define LED0_PIN_NUM 3 #define LED0_PIN_NUM 3
#define LED0_PORT GPIO_PORT_C /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_C #define LED0_PORT_NUM PORT_C
/** @} */ /** @} */

View File

@ -38,6 +38,7 @@ extern "C" {
* @{ * @{
*/ */
#define LED0_PIN_NUM 1 #define LED0_PIN_NUM 1
#define LED0_PORT GPIO_PORT_A /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_A #define LED0_PORT_NUM PORT_A
#define LED0_IS_INVERTED 1 #define LED0_IS_INVERTED 1

View File

@ -46,6 +46,7 @@ extern void lora_e5_dev_sx126x_set_rf_mode(sx126x_t *dev, sx126x_rf_mode_t rf_mo
* @name LED pin definitions and handlers * @name LED pin definitions and handlers
* @{ * @{
*/ */
#define LED0_PORT GPIO_PORT_B /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_B #define LED0_PORT_NUM PORT_B
#define LED0_PIN_NUM 5 #define LED0_PIN_NUM 5
/** @} */ /** @} */

View File

@ -37,6 +37,7 @@ extern "C" {
* @{ * @{
*/ */
#define LED0_PIN_NUM 1 #define LED0_PIN_NUM 1
#define LED0_PORT GPIO_PORT_B /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_B #define LED0_PORT_NUM PORT_B
/** @} */ /** @} */

View File

@ -49,12 +49,15 @@ extern "C" {
* @{ * @{
*/ */
#define LED0_PIN_NUM 8 /**< Pin number of red LED */ #define LED0_PIN_NUM 8 /**< Pin number of red LED */
#define LED0_PORT GPIO_PORT_B /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_B /**< Port number of red LED */ #define LED0_PORT_NUM PORT_B /**< Port number of red LED */
#define LED1_PIN_NUM 14 /**< Pin number of yellow LED */ #define LED1_PIN_NUM 14 /**< Pin number of yellow LED */
#define LED1_PORT GPIO_PORT_B /**< GPIO port of LED 1 */
#define LED1_PORT_NUM PORT_B /**< Port number of yellow LED */ #define LED1_PORT_NUM PORT_B /**< Port number of yellow LED */
#define LED2_PIN_NUM 15 /**< Pin number of green LED */ #define LED2_PIN_NUM 15 /**< Pin number of green LED */
#define LED2_PORT GPIO_PORT_B /**< GPIO port of LED 2 */
#define LED2_PORT_NUM PORT_B /**< Port number of green LED */ #define LED2_PORT_NUM PORT_B /**< Port number of green LED */
/** @} */ /** @} */

View File

@ -49,12 +49,15 @@ extern void nucleo_wl55jc_sx126x_set_rf_mode(sx126x_t *dev, sx126x_rf_mode_t rf_
* @{ * @{
*/ */
#define LED0_PIN_NUM 15 #define LED0_PIN_NUM 15
#define LED0_PORT GPIO_PORT_B /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_B #define LED0_PORT_NUM PORT_B
#define LED1_PIN_NUM 9 #define LED1_PIN_NUM 9
#define LED1_PORT GPIO_PORT_B /**< GPIO port of LED 1 */
#define LED1_PORT_NUM PORT_B #define LED1_PORT_NUM PORT_B
#define LED2_PIN_NUM 11 #define LED2_PIN_NUM 11
#define LED2_PORT GPIO_PORT_B /**< GPIO port of LED 2 */
#define LED2_PORT_NUM PORT_B #define LED2_PORT_NUM PORT_B
/** @} */ /** @} */

View File

@ -33,6 +33,7 @@ extern "C" {
* @{ * @{
*/ */
#define LED0_PIN_NUM 2 #define LED0_PIN_NUM 2
#define LED0_PORT GPIO_PORT_B /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_B #define LED0_PORT_NUM PORT_B
/** @} */ /** @} */

View File

@ -39,9 +39,11 @@ extern "C" {
* @{ * @{
*/ */
#define LED0_PIN_NUM 1 #define LED0_PIN_NUM 1
#define LED0_PORT GPIO_PORT_A /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_A #define LED0_PORT_NUM PORT_A
#define LED1_PIN_NUM 5 #define LED1_PIN_NUM 5
#define LED1_PORT GPIO_PORT_A /**< GPIO port of LED 1 */
#define LED1_PORT_NUM PORT_A #define LED1_PORT_NUM PORT_A
#define LED_PANIC LED0_ON #define LED_PANIC LED0_ON

View File

@ -37,6 +37,7 @@ extern "C" {
* @{ * @{
*/ */
#define LED0_PIN_NUM 9 #define LED0_PIN_NUM 9
#define LED0_PORT GPIO_PORT_B /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_B #define LED0_PORT_NUM PORT_B
/** @} */ /** @} */

View File

@ -32,9 +32,11 @@ extern "C" {
* @{ * @{
*/ */
#define LED0_PIN_NUM 5 #define LED0_PIN_NUM 5
#define LED0_PORT GPIO_PORT_A /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_A #define LED0_PORT_NUM PORT_A
#define LED1_PIN_NUM 13 #define LED1_PIN_NUM 13
#define LED1_PORT GPIO_PORT_B /**< GPIO port of LED 1 */
#define LED1_PORT_NUM PORT_B #define LED1_PORT_NUM PORT_B
/** @} */ /** @} */

View File

@ -30,12 +30,15 @@ extern "C" {
* @{ * @{
*/ */
#define LED0_PIN_NUM 5 #define LED0_PIN_NUM 5
#define LED0_PORT GPIO_PORT_B /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_B #define LED0_PORT_NUM PORT_B
#define LED1_PIN_NUM 0 #define LED1_PIN_NUM 0
#define LED1_PORT GPIO_PORT_B /**< GPIO port of LED 1 */
#define LED1_PORT_NUM PORT_B #define LED1_PORT_NUM PORT_B
#define LED2_PIN_NUM 1 #define LED2_PIN_NUM 1
#define LED2_PORT GPIO_PORT_B /**< GPIO port of LED 2 */
#define LED2_PORT_NUM PORT_B #define LED2_PORT_NUM PORT_B
/** @} */ /** @} */

View File

@ -34,6 +34,7 @@ extern "C" {
* @{ * @{
*/ */
#define LED0_PIN_NUM 4 #define LED0_PIN_NUM 4
#define LED0_PORT GPIO_PORT_B /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_B #define LED0_PORT_NUM PORT_B
/** @} */ /** @} */

View File

@ -38,15 +38,19 @@
* @{ * @{
*/ */
#define LED0_PIN_NUM 9 #define LED0_PIN_NUM 9
#define LED0_PORT GPIO_PORT_A /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_A #define LED0_PORT_NUM PORT_A
#define LED1_PIN_NUM 10 #define LED1_PIN_NUM 10
#define LED1_PORT GPIO_PORT_A /**< GPIO port of LED 1 */
#define LED1_PORT_NUM PORT_A #define LED1_PORT_NUM PORT_A
#define LED2_PIN_NUM 8 #define LED2_PIN_NUM 8
#define LED2_PORT GPIO_PORT_A /**< GPIO port of LED 2 */
#define LED2_PORT_NUM PORT_A #define LED2_PORT_NUM PORT_A
#define LED3_PIN_NUM 13 #define LED3_PIN_NUM 13
#define LED3_PORT GPIO_PORT_A /**< GPIO port of LED 3 */
#define LED3_PORT_NUM PORT_A #define LED3_PORT_NUM PORT_A
/** @} */ /** @} */

View File

@ -40,6 +40,7 @@ extern "C" {
* @{ * @{
*/ */
#define LED0_PIN_NUM 4 #define LED0_PIN_NUM 4
#define LED0_PORT GPIO_PORT_A /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_A #define LED0_PORT_NUM PORT_A
#define LED0_IS_INVERTED 1 #define LED0_IS_INVERTED 1
/** @} */ /** @} */

View File

@ -31,9 +31,11 @@ extern "C" {
* @{ * @{
*/ */
#define LED0_PIN_NUM 9 #define LED0_PIN_NUM 9
#define LED0_PORT GPIO_PORT_C /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_C #define LED0_PORT_NUM PORT_C
#define LED1_PIN_NUM 8 #define LED1_PIN_NUM 8
#define LED1_PORT GPIO_PORT_C /**< GPIO port of LED 1 */
#define LED1_PORT_NUM PORT_C #define LED1_PORT_NUM PORT_C
/** @} */ /** @} */

View File

@ -31,27 +31,35 @@ extern "C" {
* @{ * @{
*/ */
#define LED0_PIN_NUM 9 #define LED0_PIN_NUM 9
#define LED0_PORT GPIO_PORT_E /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_E #define LED0_PORT_NUM PORT_E
#define LED1_PIN_NUM 8 #define LED1_PIN_NUM 8
#define LED1_PORT GPIO_PORT_E /**< GPIO port of LED 1 */
#define LED1_PORT_NUM PORT_E #define LED1_PORT_NUM PORT_E
#define LED2_PIN_NUM 10 #define LED2_PIN_NUM 10
#define LED2_PORT GPIO_PORT_E /**< GPIO port of LED 2 */
#define LED2_PORT_NUM PORT_E #define LED2_PORT_NUM PORT_E
#define LED3_PIN_NUM 15 #define LED3_PIN_NUM 15
#define LED3_PORT GPIO_PORT_E /**< GPIO port of LED 3 */
#define LED3_PORT_NUM PORT_E #define LED3_PORT_NUM PORT_E
#define LED4_PIN_NUM 11 #define LED4_PIN_NUM 11
#define LED4_PORT GPIO_PORT_E /**< GPIO port of LED 4 */
#define LED4_PORT_NUM PORT_E #define LED4_PORT_NUM PORT_E
#define LED5_PIN_NUM 14 #define LED5_PIN_NUM 14
#define LED5_PORT GPIO_PORT_E /**< GPIO port of LED 5 */
#define LED5_PORT_NUM PORT_E #define LED5_PORT_NUM PORT_E
#define LED6_PIN_NUM 12 #define LED6_PIN_NUM 12
#define LED6_PORT GPIO_PORT_E /**< GPIO port of LED 6 */
#define LED6_PORT_NUM PORT_E #define LED6_PORT_NUM PORT_E
#define LED7_PIN_NUM 13 #define LED7_PIN_NUM 13
#define LED7_PORT GPIO_PORT_E /**< GPIO port of LED 7 */
#define LED7_PORT_NUM PORT_E #define LED7_PORT_NUM PORT_E
/** @} */ /** @} */

View File

@ -31,9 +31,11 @@ extern "C" {
* @{ * @{
*/ */
#define LED0_PIN_NUM 13 #define LED0_PIN_NUM 13
#define LED0_PORT GPIO_PORT_G /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_G #define LED0_PORT_NUM PORT_G
#define LED1_PIN_NUM 14 #define LED1_PIN_NUM 14
#define LED1_PORT GPIO_PORT_G /**< GPIO port of LED 1 */
#define LED1_PORT_NUM PORT_G #define LED1_PORT_NUM PORT_G
/** @} */ /** @} */

View File

@ -30,21 +30,25 @@ extern "C"
* @name Macros for controlling the on-board LEDs * @name Macros for controlling the on-board LEDs
* @{ * @{
*/ */
#define LED0_PIN_NUM 6 #define LED0_PIN_NUM 6 /**< pin number of LED 0*/
#define LED0_PORT_NUM PORT_G #define LED0_PORT GPIO_PORT_G /**< GPIO port of LED 0 */
#define LED0_IS_INVERTED 1 #define LED0_PORT_NUM PORT_G /**< GPIO port number of LED 0 */
#define LED0_IS_INVERTED 1 /**< LED 0 is active-low */
#define LED1_PIN_NUM 4 #define LED1_PIN_NUM 4 /**< pin number of LED 1*/
#define LED1_PORT_NUM PORT_D #define LED1_PORT GPIO_PORT_D /**< GPIO port of LED 1 */
#define LED1_IS_INVERTED 1 #define LED1_PORT_NUM PORT_D /**< GPIO port number of LED 0 */
#define LED1_IS_INVERTED 1 /**< LED 1 is active-low */
#define LED2_PIN_NUM 5 #define LED2_PIN_NUM 5 /**< pin number of LED 2*/
#define LED2_PORT_NUM PORT_D #define LED2_PORT GPIO_PORT_D /**< GPIO port of LED 2 */
#define LED2_IS_INVERTED 1 #define LED2_PORT_NUM PORT_D /**< GPIO port number of LED 0 */
#define LED2_IS_INVERTED 1 /**< LED 2 is active-low */
#define LED3_PIN_NUM 3 #define LED3_PIN_NUM 3 /**< pin number of LED 3*/
#define LED3_PORT_NUM PORT_K #define LED3_PORT GPIO_PORT_K /**< GPIO port of LED 3 */
#define LED3_IS_INVERTED 1 #define LED3_PORT_NUM PORT_K /**< GPIO port number of LED 0 */
#define LED3_IS_INVERTED 1 /**< LED 3 is active-low */
/** @} */ /** @} */
/** /**

View File

@ -39,15 +39,19 @@ extern "C" {
* @{ * @{
*/ */
#define LED0_PIN_NUM 13 #define LED0_PIN_NUM 13
#define LED0_PORT GPIO_PORT_D /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_D #define LED0_PORT_NUM PORT_D
#define LED1_PIN_NUM 12 #define LED1_PIN_NUM 12
#define LED1_PORT GPIO_PORT_D /**< GPIO port of LED 1 */
#define LED1_PORT_NUM PORT_D #define LED1_PORT_NUM PORT_D
#define LED2_PIN_NUM 14 #define LED2_PIN_NUM 14
#define LED2_PORT GPIO_PORT_D /**< GPIO port of LED 2 */
#define LED2_PORT_NUM PORT_D #define LED2_PORT_NUM PORT_D
#define LED3_PIN_NUM 15 #define LED3_PIN_NUM 15
#define LED3_PORT GPIO_PORT_D /**< GPIO port of LED 3 */
#define LED3_PORT_NUM PORT_D #define LED3_PORT_NUM PORT_D
/** @} */ /** @} */

View File

@ -117,12 +117,15 @@ extern "C" {
* @{ * @{
*/ */
#define LED0_PIN_NUM 5 #define LED0_PIN_NUM 5
#define LED0_PORT GPIO_PORT_A /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_A #define LED0_PORT_NUM PORT_A
#define LED1_PIN_NUM 7 #define LED1_PIN_NUM 7
#define LED1_PORT GPIO_PORT_A /**< GPIO port of LED 1 */
#define LED1_PORT_NUM PORT_A #define LED1_PORT_NUM PORT_A
#define LED2_PIN_NUM 1 #define LED2_PIN_NUM 1
#define LED2_PORT GPIO_PORT_B /**< GPIO port of LED 2 */
#define LED2_PORT_NUM PORT_B #define LED2_PORT_NUM PORT_B
/** @} */ /** @} */

View File

@ -62,6 +62,7 @@ extern "C" {
* @{ * @{
*/ */
#define LED0_PIN_NUM 1 /**< LD1 pin number */ #define LED0_PIN_NUM 1 /**< LD1 pin number */
#define LED0_PORT GPIO_PORT_I /**< GPIO port of LD1 */
#define LED0_PORT_NUM PORT_I /**< LD1 port */ #define LED0_PORT_NUM PORT_I /**< LD1 port */
/** @} */ /** @} */

View File

@ -32,15 +32,19 @@ extern "C" {
* @{ * @{
*/ */
#define LED0_PIN_NUM 13 #define LED0_PIN_NUM 13
#define LED0_PORT GPIO_PORT_J /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_J #define LED0_PORT_NUM PORT_J
#define LED1_PIN_NUM 5 #define LED1_PIN_NUM 5
#define LED1_PORT GPIO_PORT_J /**< GPIO port of LED 1 */
#define LED1_PORT_NUM PORT_J #define LED1_PORT_NUM PORT_J
#define LED2_PIN_NUM 12 #define LED2_PIN_NUM 12
#define LED2_PORT GPIO_PORT_A /**< GPIO port of LED 2 */
#define LED2_PORT_NUM PORT_A #define LED2_PORT_NUM PORT_A
#define LED3_PIN_NUM 4 #define LED3_PIN_NUM 4
#define LED3_PORT GPIO_PORT_D /**< GPIO port of LED 3 */
#define LED3_PORT_NUM PORT_D #define LED3_PORT_NUM PORT_D
/** @} */ /** @} */

View File

@ -29,6 +29,7 @@ extern "C" {
#define LED0_PIN_NUM 12 #define LED0_PIN_NUM 12
#define LED0_PORT GPIO_PORT_A /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_A #define LED0_PORT_NUM PORT_A
#define BTN0_PIN GPIO_PIN(PORT_A, 0) #define BTN0_PIN GPIO_PIN(PORT_A, 0)

View File

@ -37,9 +37,11 @@ extern "C" {
* @{ * @{
*/ */
#define LED0_PIN_NUM 4 #define LED0_PIN_NUM 4
#define LED0_PORT GPIO_PORT_B /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_B #define LED0_PORT_NUM PORT_B
#define LED1_PIN_NUM 5 #define LED1_PIN_NUM 5
#define LED1_PORT GPIO_PORT_A /**< GPIO port of LED 1 */
#define LED1_PORT_NUM PORT_A #define LED1_PORT_NUM PORT_A
/** @} */ /** @} */

View File

@ -33,9 +33,11 @@ extern "C" {
* @{ * @{
*/ */
#define LED0_PIN_NUM 2 #define LED0_PIN_NUM 2
#define LED0_PORT GPIO_PORT_B /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_B #define LED0_PORT_NUM PORT_B
#define LED1_PIN_NUM 8 #define LED1_PIN_NUM 8
#define LED1_PORT GPIO_PORT_E /**< GPIO port of LED 1 */
#define LED1_PORT_NUM PORT_E #define LED1_PORT_NUM PORT_E
/** @} */ /** @} */

View File

@ -148,12 +148,14 @@ extern "C" {
* - LD3 green, active LOW (connected to PA5) * - LD3 green, active LOW (connected to PA5)
* @{ * @{
*/ */
#define LED0_PIN_NUM 13 /**< green LED (LD2) pin */ #define LED0_PIN_NUM 13 /**< green LED (LD2) pin */
#define LED0_PORT_NUM PORT_B /**< green LED (LD2) port */ #define LED0_PORT GPIO_PORT_B /**< GPIO port of green LED (LD2) */
#define LED0_PORT_NUM PORT_B /**< green LED (LD2) port */
#define LED1_PIN_NUM 5 /**< green LED (LD3) pin */ #define LED1_PIN_NUM 5 /**< green LED (LD3) pin */
#define LED1_PORT_NUM PORT_A /**< green LED (LD3) port */ #define LED1_PORT GPIO_PORT_A /**< GPIO port of green LED (LD3) */
#define LED1_IS_INVERTED 1 /**< green LED (LD3) is LOW active */ #define LED1_PORT_NUM PORT_A /**< green LED (LD3) port */
#define LED1_IS_INVERTED 1 /**< green LED (LD3) is LOW active */
/** @} */ /** @} */
/** /**

View File

@ -34,12 +34,15 @@ extern "C" {
* @{ * @{
*/ */
#define LED0_PIN_NUM 3 #define LED0_PIN_NUM 3
#define LED0_PORT GPIO_PORT_E /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_E #define LED0_PORT_NUM PORT_E
#define LED1_PIN_NUM 4 #define LED1_PIN_NUM 4
#define LED1_PORT GPIO_PORT_E /**< GPIO port of LED 1 */
#define LED1_PORT_NUM PORT_E #define LED1_PORT_NUM PORT_E
#define LED2_PIN_NUM 1 #define LED2_PIN_NUM 1
#define LED2_PORT GPIO_PORT_E /**< GPIO port of LED 2 */
#define LED2_PORT_NUM PORT_E #define LED2_PORT_NUM PORT_E
/** @} */ /** @} */

View File

@ -28,6 +28,7 @@ extern "C" {
#endif #endif
#define LED0_PIN_NUM 4 #define LED0_PIN_NUM 4
#define LED0_PORT GPIO_PORT_A /**< GPIO port of LED 0 */
#define LED0_PORT_NUM PORT_A #define LED0_PORT_NUM PORT_A
#define BTN0_PIN GPIO_PIN(PORT_A, 14) #define BTN0_PIN GPIO_PIN(PORT_A, 14)