diff --git a/boards/nucleo-f070/Makefile b/boards/nucleo-f070/Makefile new file mode 100644 index 0000000000..f8fcbb53a0 --- /dev/null +++ b/boards/nucleo-f070/Makefile @@ -0,0 +1,3 @@ +MODULE = board + +include $(RIOTBASE)/Makefile.base diff --git a/boards/nucleo-f070/Makefile.dep b/boards/nucleo-f070/Makefile.dep new file mode 100644 index 0000000000..76e2dc17b4 --- /dev/null +++ b/boards/nucleo-f070/Makefile.dep @@ -0,0 +1 @@ +include $(RIOTBOARD)/nucleo-common/Makefile.dep diff --git a/boards/nucleo-f070/Makefile.features b/boards/nucleo-f070/Makefile.features new file mode 100644 index 0000000000..c7f508057a --- /dev/null +++ b/boards/nucleo-f070/Makefile.features @@ -0,0 +1,12 @@ +# Put defined MCU peripherals here (in alphabetical order) +FEATURES_PROVIDED += periph_cpuid +FEATURES_PROVIDED += periph_gpio +FEATURES_PROVIDED += periph_rtc +FEATURES_PROVIDED += periph_timer +FEATURES_PROVIDED += periph_uart + +# Various other features (if any) +FEATURES_PROVIDED += cpp + +# The board MPU family (used for grouping by the CI system) +FEATURES_MCU_GROUP = cortex_m0_1 diff --git a/boards/nucleo-f070/Makefile.include b/boards/nucleo-f070/Makefile.include new file mode 100644 index 0000000000..02aa57f43a --- /dev/null +++ b/boards/nucleo-f070/Makefile.include @@ -0,0 +1,6 @@ +## the cpu to build for +export CPU = stm32f0 +export CPU_MODEL = stm32f070rb + +# load the common Makefile.include for Nucleo boards +include $(RIOTBOARD)/nucleo-common/Makefile.include diff --git a/boards/nucleo-f070/board.c b/boards/nucleo-f070/board.c new file mode 100644 index 0000000000..33935444a8 --- /dev/null +++ b/boards/nucleo-f070/board.c @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2016 Freie Universität Berlin + * 2016 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_nucleo-f070 + * @{ + * + * @file + * @brief Board specific implementations for the nucleo-f070 board + * + * @author Hauke Petersen + * @author Alexandre Abadie + * + * @} + */ + +#include "board.h" +#include "periph/gpio.h" + + +void board_init(void) +{ + /* initialize the boards LED */ + gpio_init(LED0_PIN, GPIO_OUT); + + /* initialize the CPU */ + cpu_init(); +} diff --git a/boards/nucleo-f070/dist/openocd.cfg b/boards/nucleo-f070/dist/openocd.cfg new file mode 100644 index 0000000000..4f0cfb3a02 --- /dev/null +++ b/boards/nucleo-f070/dist/openocd.cfg @@ -0,0 +1 @@ +source [find board/st_nucleo_f0.cfg] diff --git a/boards/nucleo-f070/include/board.h b/boards/nucleo-f070/include/board.h new file mode 100644 index 0000000000..ac10535576 --- /dev/null +++ b/boards/nucleo-f070/include/board.h @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2016 Freie Universität Berlin + * 2016 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. + */ + +/** + * @defgroup boards_nucleo-f072 Nucleo-F072 + * @ingroup boards + * @brief Board specific files for the nucleo-f072 board + * @{ + * + * @file + * @brief Board specific definitions for the nucleo-f072 board + * + * @author Hauke Petersen + * @author Mohmmad Ayman + * @author José Alamos + * @author Alexandre Aabdie + */ + +#ifndef BOARD_H_ +#define BOARD_H_ + +#include +#include "board_common.h" + +#include "cpu.h" +#include "periph_conf.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +/** + * @brief Initialize board specific hardware, including clock, LEDs and std-IO + */ +void board_init(void); + +#ifdef __cplusplus +} +#endif + +#endif /* BOARD_H_ */ +/** @} */ diff --git a/boards/nucleo-f070/include/periph_conf.h b/boards/nucleo-f070/include/periph_conf.h new file mode 100644 index 0000000000..afcdd00e35 --- /dev/null +++ b/boards/nucleo-f070/include/periph_conf.h @@ -0,0 +1,135 @@ +/* + * Copyright (C) 2016 Freie Universität Berlin + * 2016 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_nucleo-f070 + * @{ + * + * @file + * @brief Peripheral MCU configuration for the nucleo-f070 board + * + * @author Hauke Petersen + * @author Alexandre Aabdie + */ + +#ifndef PERIPH_CONF_H_ +#define PERIPH_CONF_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @name Clock system configuration + * @{ + */ +#define CLOCK_HSE (8000000U) /* external oscillator */ +#define CLOCK_CORECLOCK (48000000U) /* desired core clock frequency */ + +/* the actual PLL values are automatically generated */ +#define CLOCK_PLL_MUL (CLOCK_CORECLOCK / CLOCK_HSE) +/** @} */ + +/** + * @brief Timer configuration + * @{ + */ +#define TIMER_NUMOF (1U) +#define TIMER_0_EN 1 +#define TIMER_IRQ_PRIO 1 + +/* Timer 0 configuration */ +#define TIMER_0_DEV TIM3 +#define TIMER_0_CHANNELS 4 +#define TIMER_0_FREQ (CLOCK_CORECLOCK) +#define TIMER_0_MAX_VALUE (0xffffffff) +#define TIMER_0_CLKEN() (RCC->APB1ENR |= RCC_APB1ENR_TIM3EN) +#define TIMER_0_IRQ_CHAN TIM3_IRQn +#define TIMER_0_ISR isr_tim3 +/** @} */ + +/** + * @brief UART configuration + * @} + */ +#define UART_NUMOF (2U) +#define UART_0_EN 1 +#define UART_1_EN 1 +#define UART_IRQ_PRIO 1 + +/* UART 0 device configuration */ +#define UART_0_DEV USART2 +#define UART_0_CLKEN() (RCC->APB1ENR |= RCC_APB1ENR_USART2EN) +#define UART_0_CLKDIS() (RCC->APB1ENR &= (~RCC_APB1ENR_USART2EN)) +#define UART_0_IRQ USART2_IRQn +#define UART_0_ISR isr_usart2 +/* UART 0 pin configuration */ +#define UART_0_PORT GPIOA +#define UART_0_PORT_CLKEN() (RCC->AHBENR |= RCC_AHBENR_GPIOAEN) +#define UART_0_RX_PIN 3 +#define UART_0_TX_PIN 2 +#define UART_0_AF 1 + +/* UART 1 device configuration */ +#define UART_1_DEV USART3 +#define UART_1_CLKEN() (RCC->APB1ENR |= RCC_APB1ENR_USART3EN) +#define UART_1_CLKDIS() (RCC->APB1ENR &= (~RCC_APB1ENR_USART3EN)) +#define UART_1_IRQ USART3_4_IRQn +#define UART_1_ISR isr_usart3_8 +/* UART 1 pin configuration */ +#define UART_1_PORT GPIOC +#define UART_1_PORT_CLKEN() (RCC->AHBENR |= RCC_AHBENR_GPIOCEN) +#define UART_1_RX_PIN 11 +#define UART_1_TX_PIN 10 +#define UART_1_AF 1 +/** @} */ + + +/** + * @brief ADC configuration + * @{ + */ +#define ADC_CONFIG { \ + { GPIO_PIN(PORT_A, 0), 0 },\ + { GPIO_PIN(PORT_A, 1), 1 },\ + { GPIO_PIN(PORT_A, 4), 4 },\ + { GPIO_PIN(PORT_B, 0), 8 },\ + { GPIO_PIN(PORT_C, 1), 11 },\ + { GPIO_PIN(PORT_C, 0), 10 } \ +} + +#define ADC_NUMOF (6) +/** @} */ + + +/** + * @brief DAC configuration + * @{ + */ +#define DAC_NUMOF (0) +/** @} */ + +/** + * @name RTC configuration + * @{ + */ +/** + * Nucleos with MB1136 C-02 or MB1136 C-03 -sticker on it have the required LSE + * oscillator provided on the X2 slot. + * See Nucleo User Manual UM1724 section 5.6.2. + */ +#define RTC_NUMOF (1U) +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* PERIPH_CONF_H_ */ +/** @} */ diff --git a/examples/gnrc_border_router/Makefile b/examples/gnrc_border_router/Makefile index 08e477ffb8..3d855058ac 100644 --- a/examples/gnrc_border_router/Makefile +++ b/examples/gnrc_border_router/Makefile @@ -11,7 +11,7 @@ BOARD_INSUFFICIENT_MEMORY := airfy-beacon cc2650stk msb-430 msb-430h pca10000 pc nrf51dongle nrf6310 nucleo-f103 nucleo-f334 \ spark-core stm32f0discovery telosb \ weio wsn430-v1_3b wsn430-v1_4 yunjia-nrf51822 z1 nucleo-f072 \ - nucleo-f030 + nucleo-f030 nucleo-f070 # use ethos (ethernet over serial) for network communication and stdio over # UART, but not on native, as native has a tap interface towards the host. diff --git a/examples/gnrc_networking/Makefile b/examples/gnrc_networking/Makefile index 28089ab251..2c8157c3ae 100644 --- a/examples/gnrc_networking/Makefile +++ b/examples/gnrc_networking/Makefile @@ -10,7 +10,7 @@ RIOTBASE ?= $(CURDIR)/../.. BOARD_INSUFFICIENT_MEMORY := airfy-beacon chronos msb-430 msb-430h nrf51dongle \ nrf6310 nucleo-f103 nucleo-f334 pca10000 pca10005 spark-core \ stm32f0discovery telosb weio wsn430-v1_3b wsn430-v1_4 \ - yunjia-nrf51822 z1 nucleo-f072 nucleo-f030 + yunjia-nrf51822 z1 nucleo-f072 nucleo-f030 nucleo-f070 # Include packages that pull up and auto-init the link layer. # NOTE: 6LoWPAN will be included if IEEE802.15.4 devices are present diff --git a/examples/gnrc_tftp/Makefile b/examples/gnrc_tftp/Makefile index a06144cccc..c0ba8b7eaa 100644 --- a/examples/gnrc_tftp/Makefile +++ b/examples/gnrc_tftp/Makefile @@ -10,7 +10,8 @@ RIOTBASE ?= $(CURDIR)/../.. BOARD_INSUFFICIENT_MEMORY := airfy-beacon chronos msb-430 msb-430h nrf51dongle \ nrf6310 nucleo-f103 nucleo-f334 pca10000 pca10005 \ spark-core stm32f0discovery telosb weio wsn430-v1_3b \ - wsn430-v1_4 yunjia-nrf51822 z1 nucleo-f072 nucleo-f030 + wsn430-v1_4 yunjia-nrf51822 z1 nucleo-f072 nucleo-f030 \ + nucleo-f070 # Include packages that pull up and auto-init the link layer. # NOTE: 6LoWPAN will be included if IEEE802.15.4 devices are present diff --git a/examples/microcoap_server/Makefile b/examples/microcoap_server/Makefile index 31dc9cf921..b4e3a46a1e 100644 --- a/examples/microcoap_server/Makefile +++ b/examples/microcoap_server/Makefile @@ -10,7 +10,7 @@ RIOTBASE ?= $(CURDIR)/../.. BOARD_INSUFFICIENT_MEMORY := airfy-beacon chronos msb-430 msb-430h nrf51dongle \ nrf6310 pca10000 pca10005 spark-core \ stm32f0discovery telosb weio wsn430-v1_3b wsn430-v1_4 \ - yunjia-nrf51822 z1 nucleo-f072 nucleo-f030 + yunjia-nrf51822 z1 nucleo-f072 nucleo-f030 nucleo-f070 # Include packages that pull up and auto-init the link layer. # NOTE: 6LoWPAN will be included if IEEE802.15.4 devices are present diff --git a/examples/posix_sockets/Makefile b/examples/posix_sockets/Makefile index 0f8df6b5fc..07d6c55fe8 100644 --- a/examples/posix_sockets/Makefile +++ b/examples/posix_sockets/Makefile @@ -10,7 +10,7 @@ RIOTBASE ?= $(CURDIR)/../.. BOARD_INSUFFICIENT_MEMORY := airfy-beacon chronos msb-430 msb-430h nrf51dongle nrf6310 \ nucleo-f334 pca10000 pca10005 stm32f0discovery telosb weio \ wsn430-v1_3b wsn430-v1_4 yunjia-nrf51822 z1 nucleo-f072 \ - nucleo-f030 + nucleo-f030 nucleo-f070 # Include packages that pull up and auto-init the link layer. # NOTE: 6LoWPAN will be included if IEEE802.15.4 devices are present diff --git a/tests/coap/Makefile b/tests/coap/Makefile index 99ad9b61e8..19e6927376 100644 --- a/tests/coap/Makefile +++ b/tests/coap/Makefile @@ -5,7 +5,8 @@ include ../Makefile.tests_common BOARD_BLACKLIST := arduino-mega2560 chronos msb-430 msb-430h telosb wsn430-v1_3b \ wsn430-v1_4 z1 waspmote-pro arduino-uno arduino-duemilanove BOARD_INSUFFICIENT_MEMORY := chronos msb-430 msb-430h nucleo-f334 nucleo-f030 \ - stm32f0discovery telosb weio wsn430-v1_3b wsn430-v1_4 z1 + stm32f0discovery telosb weio wsn430-v1_3b wsn430-v1_4 z1 \ + nucleo-f070 USEMODULE += gnrc_ipv6 USEMODULE += gnrc_conn_udp diff --git a/tests/conn_ip/Makefile b/tests/conn_ip/Makefile index 7204634875..661a96d57d 100644 --- a/tests/conn_ip/Makefile +++ b/tests/conn_ip/Makefile @@ -5,7 +5,7 @@ BOARD ?= native RIOTBASE ?= $(CURDIR)/../.. BOARD_INSUFFICIENT_MEMORY := chronos msb-430 msb-430h nucleo-f334 stm32f0discovery telosb \ - weio wsn430-v1_3b wsn430-v1_4 z1 nucleo-f030 + weio wsn430-v1_3b wsn430-v1_4 z1 nucleo-f030 nucleo-f070 USEMODULE += gnrc_netdev_default USEMODULE += auto_init_gnrc_netif diff --git a/tests/gnrc_sixlowpan/Makefile b/tests/gnrc_sixlowpan/Makefile index 583195be7e..13d17e1b78 100644 --- a/tests/gnrc_sixlowpan/Makefile +++ b/tests/gnrc_sixlowpan/Makefile @@ -10,7 +10,7 @@ RIOTBASE ?= $(CURDIR)/../.. BOARD_INSUFFICIENT_MEMORY := airfy-beacon chronos msb-430 msb-430h nrf51dongle \ nrf6310 nucleo-f103 nucleo-f334 pca10000 pca10005 spark-core \ stm32f0discovery telosb weio wsn430-v1_3b wsn430-v1_4 \ - yunjia-nrf51822 z1 nucleo-f030 + yunjia-nrf51822 z1 nucleo-f030 nucleo-f070 # Include packages that pull up and auto-init the link layer. # NOTE: 6LoWPAN will be included if IEEE802.15.4 devices are present diff --git a/tests/slip/Makefile b/tests/slip/Makefile index 009e612acc..e40124f045 100644 --- a/tests/slip/Makefile +++ b/tests/slip/Makefile @@ -1,7 +1,8 @@ APPLICATION = driver_slip include ../Makefile.tests_common -BOARD_INSUFFICIENT_MEMORY := msb-430 msb-430h nucleo-f334 stm32f0discovery weio nucleo-f030 +BOARD_INSUFFICIENT_MEMORY := msb-430 msb-430h nucleo-f334 stm32f0discovery weio \ + nucleo-f030 USEMODULE += auto_init_gnrc_netif USEMODULE += gnrc diff --git a/tests/thread_cooperation/Makefile b/tests/thread_cooperation/Makefile index dee5366e55..a4932de24a 100644 --- a/tests/thread_cooperation/Makefile +++ b/tests/thread_cooperation/Makefile @@ -5,7 +5,7 @@ BOARD_INSUFFICIENT_MEMORY := cc2650stk chronos msb-430 msb-430h mbed_lpc1768 \ stm32f0discovery pca10000 pca10005 \ yunjia-nrf51822 spark-core airfy-beacon nucleo-f103 \ nucleo-f334 nrf51dongle nrf6310 weio nucleo-f072 \ - nucleo-f030 + nucleo-f030 nucleo-f070 DISABLE_MODULE += auto_init diff --git a/tests/unittests/Makefile b/tests/unittests/Makefile index 99f8aff01c..890daf431c 100644 --- a/tests/unittests/Makefile +++ b/tests/unittests/Makefile @@ -8,7 +8,7 @@ BOARD_INSUFFICIENT_MEMORY := airfy-beacon cc2650stk chronos msb-430 msb-430h pca arduino-mega2560 airfy-beacon nrf51dongle nrf6310 \ weio waspmote-pro nucleo-f072 arduino-uno \ arduino-duemilanove sodaq-autonomo arduino-zero \ - nucleo-f030 + nucleo-f030 nucleo-f070 USEMODULE += embunit @@ -26,7 +26,7 @@ ARM_CORTEX_M_BOARDS := airfy-beacon arduino-due cc2538dk ek-lm4f120xl f4vi1 fox nucleo-f091 nucleo-f303 nucleo-f334 nucleo-f401 nucleo-l1 openmote-cc2538 \ pba-d-01-kw2x pca10000 pca10005 remote saml21-xpro samr21-xpro slwstk6220a \ spark-core stm32f0discovery stm32f3discovery stm32f4discovery udoo weio \ - yunjia-nrf51822 sodaq-autonomo arduino-zero nucleo-f030 + yunjia-nrf51822 sodaq-autonomo arduino-zero nucleo-f030 nucleo-f070 DISABLE_TEST_FOR_ARM_CORTEX_M := tests-relic