diff --git a/boards/nucleo144-common/Makefile b/boards/nucleo144-common/Makefile new file mode 100644 index 000000000..feaaeb1b9 --- /dev/null +++ b/boards/nucleo144-common/Makefile @@ -0,0 +1,3 @@ +MODULE = nucleo144_common + +include $(RIOTBASE)/Makefile.base diff --git a/boards/nucleo144-common/Makefile.features b/boards/nucleo144-common/Makefile.features new file mode 100644 index 000000000..a95c354da --- /dev/null +++ b/boards/nucleo144-common/Makefile.features @@ -0,0 +1,2 @@ +# Various common features of Nucleo-144 boards +FEATURES_PROVIDED += cpp diff --git a/boards/nucleo144-common/Makefile.include b/boards/nucleo144-common/Makefile.include new file mode 100644 index 000000000..fd1c1a915 --- /dev/null +++ b/boards/nucleo144-common/Makefile.include @@ -0,0 +1,5 @@ +# include nucleo common serial configuration +include $(RIOTBOARD)/nucleo-common/Makefile.include.serial + +# add the common header files to the include path +INCLUDES += -I$(RIOTBOARD)/nucleo144-common/include diff --git a/boards/nucleo144-common/include/board_common.h b/boards/nucleo144-common/include/board_common.h new file mode 100644 index 000000000..4199c043c --- /dev/null +++ b/boards/nucleo144-common/include/board_common.h @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2017 Inria + * 2017 OTAKeys + * + * 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. + */ + +/** + * @defgroup boards_nucleo144-common STM Nucleo-144 Common + * @ingroup boards + * @brief Common files for STM Nucleo-144 boards + * @{ + * + * @file + * @brief Common pin definitions and board configuration options + * + * @author Alexandre Abadie + * @author Vincent Dupont + */ + +#ifndef BOARD_COMMON_H +#define BOARD_COMMON_H + +#include "cpu.h" +#include "periph_conf.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief LED pin definitions and handlers + * @{ + */ +#define LED0_PIN GPIO_PIN(PORT_B, 0) +#define LED0_MASK (1 << 0) +#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_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 LED2_PIN GPIO_PIN(PORT_B, 14) +#define LED2_MASK (1 << 14) +#define LED2_ON (GPIOB->BSRR = LED2_MASK) +#define LED2_OFF (GPIOB->BSRR = (LED2_MASK << 16)) +#define LED2_TOGGLE (GPIOB->ODR ^= LED2_MASK) +/** @} */ + +/** + * @brief User button + */ +#define BTN_B1_PIN GPIO_PIN(PORT_C, 13) + +/** + * @brief Initialize board specific hardware, including clock, LEDs and std-IO + */ +void board_init(void); + +#ifdef __cplusplus +} +#endif + +#endif /* BOARD_COMMON_H */ +/** @} */ diff --git a/boards/nucleo144-common/include/gpio_params.h b/boards/nucleo144-common/include/gpio_params.h new file mode 100644 index 000000000..ead07268f --- /dev/null +++ b/boards/nucleo144-common/include/gpio_params.h @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2017 Inria + * + * 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_nucleo144-common + * @{ + * + * @file + * @brief Board specific configuration of direct mapped GPIOs + * + * @author Alexandre Abadie + */ + +#ifndef GPIO_PARAMS_H +#define GPIO_PARAMS_H + +#include "board.h" +#include "saul/periph.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief GPIO pin configuration + */ +static const saul_gpio_params_t saul_gpio_params[] = +{ + { + .name = "LD1(green)", + .pin = LED0_PIN, + .mode = GPIO_OUT + }, + { + .name = "LD2(blue)", + .pin = LED1_PIN, + .mode = GPIO_OUT + }, + { + .name = "LD3(red)", + .pin = LED2_PIN, + .mode = GPIO_OUT + }, + { + .name = "B1(User button)", + .pin = BTN_B1_PIN, + .mode = GPIO_IN_PD + } +}; + +#ifdef __cplusplus +} +#endif + +#endif /* GPIO_PARAMS_H */ +/** @} */