diff --git a/boards/arm/stm32f0l0g0/nucleo-g070rb/README.txt b/boards/arm/stm32f0l0g0/nucleo-g070rb/README.txt index 9a035a10efc..9923171b747 100644 --- a/boards/arm/stm32f0l0g0/nucleo-g070rb/README.txt +++ b/boards/arm/stm32f0l0g0/nucleo-g070rb/README.txt @@ -6,7 +6,7 @@ The Nucleo-G070RB is a member of the Nucleo-64 board family. STATUS ====== - 2019-09-04: Initial support for the STM32 Nucleo-G070RB board, based on STM32 Nucleo-G071RB. + 2019-09-04: Initial support for the STM32 Nucleo-G070RB board, based on STM32 Nucleo-G071RB. Basic NSH configuration is functional. 2019-09-16: Enable PWR peripheral and increase sysclk to max. frequency. - + 2019-10-04: Enable basic timer TIM6. Timer example working. diff --git a/boards/arm/stm32f0l0g0/nucleo-g070rb/configs/nsh/defconfig b/boards/arm/stm32f0l0g0/nucleo-g070rb/configs/nsh/defconfig index 7898744ef56..88139cca0e4 100644 --- a/boards/arm/stm32f0l0g0/nucleo-g070rb/configs/nsh/defconfig +++ b/boards/arm/stm32f0l0g0/nucleo-g070rb/configs/nsh/defconfig @@ -11,18 +11,21 @@ CONFIG_ARCH="arm" CONFIG_ARCH_BOARD="nucleo-g070rb" CONFIG_ARCH_BOARD_NUCLEO_G070RB=y CONFIG_ARCH_CHIP="stm32f0l0g0" -CONFIG_ARCH_CHIP_STM32G0=y CONFIG_ARCH_CHIP_STM32G070RB=y +CONFIG_ARCH_CHIP_STM32G0=y CONFIG_ARCH_STACKDUMP=y +CONFIG_BOARD_LATE_INITIALIZE=y CONFIG_BOARD_LOOPSPERMSEC=2796 CONFIG_BUILTIN=y +CONFIG_DEBUG_FULLOPT=y +CONFIG_DEBUG_SYMBOLS=y CONFIG_DISABLE_ENVIRON=y CONFIG_DISABLE_MOUNTPOINT=y CONFIG_DISABLE_MQUEUE=y -CONFIG_DISABLE_POLL=y CONFIG_DISABLE_POSIX_TIMERS=y CONFIG_DISABLE_PSEUDOFS_OPERATIONS=y CONFIG_EXAMPLES_HELLO=y +CONFIG_EXAMPLES_TIMER=y CONFIG_INTELHEX_BINARY=y CONFIG_MAX_TASKS=8 CONFIG_MAX_WDOGPARMS=2 @@ -49,11 +52,12 @@ CONFIG_START_MONTH=5 CONFIG_START_YEAR=2013 CONFIG_STDIO_DISABLE_BUFFERING=y CONFIG_STM32F0L0G0_PWR=y -CONFIG_STM32F0L0G0_STM32G0=y +CONFIG_STM32F0L0G0_TIM6=y CONFIG_STM32F0L0G0_USART2=y CONFIG_SYSTEM_NSH=y CONFIG_TASK_NAME_SIZE=0 CONFIG_TASK_SPAWN_DEFAULT_STACKSIZE=1536 +CONFIG_TIMER=y CONFIG_USART2_SERIAL_CONSOLE=y CONFIG_USERMAIN_STACKSIZE=1536 CONFIG_USER_ENTRYPOINT="nsh_main" diff --git a/boards/arm/stm32f0l0g0/nucleo-g070rb/include/board.h b/boards/arm/stm32f0l0g0/nucleo-g070rb/include/board.h index 384aac51861..b0c1bd4d277 100644 --- a/boards/arm/stm32f0l0g0/nucleo-g070rb/include/board.h +++ b/boards/arm/stm32f0l0g0/nucleo-g070rb/include/board.h @@ -129,7 +129,21 @@ #define STM32_RCC_CFGR_PPRE1 RCC_CFGR_PPRE1_HCLK #define STM32_PCLK1_FREQUENCY STM32_HCLK_FREQUENCY -/* TODO: timers */ +/* Timer clock frequencies */ + +/* Timers driven from APB1. Frequency = PCLK1 */ + +#define STM32_APB1_TIM3_CLKIN (STM32_PCLK1_FREQUENCY) +#define STM32_APB1_TIM6_CLKIN (STM32_PCLK1_FREQUENCY) +#define STM32_APB1_TIM7_CLKIN (STM32_PCLK1_FREQUENCY) + +/* Timers driven from APB2 is equal to PCLK1 */ + +#define STM32_APB2_TIM1_CLKIN (STM32_PCLK1_FREQUENCY) +#define STM32_APB2_TIM14_CLKIN (STM32_PCLK1_FREQUENCY) +#define STM32_APB2_TIM15_CLKIN (STM32_PCLK1_FREQUENCY) +#define STM32_APB2_TIM16_CLKIN (STM32_PCLK1_FREQUENCY) +#define STM32_APB2_TIM17_CLKIN (STM32_PCLK1_FREQUENCY) /* LED definitions **********************************************************/ diff --git a/boards/arm/stm32f0l0g0/nucleo-g070rb/src/Makefile b/boards/arm/stm32f0l0g0/nucleo-g070rb/src/Makefile index ea6e567034b..622ec5c1652 100644 --- a/boards/arm/stm32f0l0g0/nucleo-g070rb/src/Makefile +++ b/boards/arm/stm32f0l0g0/nucleo-g070rb/src/Makefile @@ -55,4 +55,9 @@ ifeq ($(CONFIG_LIB_BOARDCTL),y) CSRCS += stm32_appinit.c endif +ifeq ($(CONFIG_TIMER),y) +CSRCS += stm32_timer.c +endif + + include $(TOPDIR)/boards/Board.mk diff --git a/boards/arm/stm32f0l0g0/nucleo-g070rb/src/nucleo-g070rb.h b/boards/arm/stm32f0l0g0/nucleo-g070rb/src/nucleo-g070rb.h index eb5bb7ff24c..650f76f6f4c 100644 --- a/boards/arm/stm32f0l0g0/nucleo-g070rb/src/nucleo-g070rb.h +++ b/boards/arm/stm32f0l0g0/nucleo-g070rb/src/nucleo-g070rb.h @@ -108,6 +108,26 @@ * Public Function Prototypes ****************************************************************************/ +/**************************************************************************** + * Name: stm32_timer_driver_setup + * + * Description: + * Configure the timer driver. + * + * Input Parameters: + * devpath - The full path to the timer device. This should be of the form /dev/timer0 + * timer - The timer's number. + * + * Returned Value: + * Zero (OK) is returned on success; A negated errno value is returned + * to indicate the nature of any failure. + * + ****************************************************************************/ + +#ifdef CONFIG_TIMER +int stm32_timer_driver_setup(FAR const char *devpath, int timer); +#endif + /***************************************************************************** * Name: stm32_bringup * diff --git a/boards/arm/stm32f0l0g0/nucleo-g070rb/src/stm32_bringup.c b/boards/arm/stm32f0l0g0/nucleo-g070rb/src/stm32_bringup.c index 923fb41bc9b..6a866f5f6c0 100644 --- a/boards/arm/stm32f0l0g0/nucleo-g070rb/src/stm32_bringup.c +++ b/boards/arm/stm32f0l0g0/nucleo-g070rb/src/stm32_bringup.c @@ -111,6 +111,26 @@ int stm32_bringup(void) } #endif +#ifdef CONFIG_TIMER + /*Initialize basic timers */ +# if defined(CONFIG_STM32F0L0G0_TIM6) + syslog(LOG_ERR, "Init timer\n"); + ret = stm32_timer_driver_setup("/dev/timer0", 6); + if (ret < 0) + { + syslog(LOG_ERR, "ERROR: stm32_timer_driver_setup failed. TIM6: %d\n", ret); + } +# endif +# if defined(CONFIG_STM32F0L0G0_TIM7) + ret = stm32_timer_driver_setup("/dev/timer1", 7); + if (ret < 0) + { + syslog(LOG_ERR, "ERROR: stm32_timer_driver_setup failed. TIM7: %d\n", ret); + } + +# endif +#endif + UNUSED(ret); return OK; }