From e86d9adb93189a3811a5ee38a2e4fadb7456423f Mon Sep 17 00:00:00 2001 From: David Sidrane Date: Tue, 2 May 2017 11:06:32 -1000 Subject: [PATCH] px4fmu-v4:Implement board_on_reset API Added board_on_reset, to force timer GPIO to output low on reset This will stop the motors. --- src/drivers/boards/px4fmu-v4/board_config.h | 1 + src/drivers/boards/px4fmu-v4/px4fmu_init.c | 33 ++++++++++++++++----- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/src/drivers/boards/px4fmu-v4/board_config.h b/src/drivers/boards/px4fmu-v4/board_config.h index 88385a907a..43c2f2fac7 100644 --- a/src/drivers/boards/px4fmu-v4/board_config.h +++ b/src/drivers/boards/px4fmu-v4/board_config.h @@ -345,6 +345,7 @@ /* This board provides a DMA pool and APIs */ #define BOARD_DMA_ALLOC_POOL_SIZE 5120 +#define BOARD_HAS_ON_RESET 1 __BEGIN_DECLS /**************************************************************************************************** diff --git a/src/drivers/boards/px4fmu-v4/px4fmu_init.c b/src/drivers/boards/px4fmu-v4/px4fmu_init.c index 009af9c34a..55208b33e7 100644 --- a/src/drivers/boards/px4fmu-v4/px4fmu_init.c +++ b/src/drivers/boards/px4fmu-v4/px4fmu_init.c @@ -152,6 +152,29 @@ __EXPORT void board_peripheral_reset(int ms) } +/************************************************************************************ + * Name: board_on_reset + * + * Description: + * Optionally provided function called on entry to board_system_reset + * It should perform any house keeping prior to the rest. + * + * status - 1 if resetting to boot loader + * 0 if just resetting + * + ************************************************************************************/ +__EXPORT void board_on_reset(int status) +{ + UNUSED(status); + /* configure the GPIO pins to outputs and keep them low */ + stm32_configgpio(GPIO_GPIO0_OUTPUT); + stm32_configgpio(GPIO_GPIO1_OUTPUT); + stm32_configgpio(GPIO_GPIO2_OUTPUT); + stm32_configgpio(GPIO_GPIO3_OUTPUT); + stm32_configgpio(GPIO_GPIO4_OUTPUT); + stm32_configgpio(GPIO_GPIO5_OUTPUT); +} + /************************************************************************************ * Name: stm32_boardinitialize * @@ -165,13 +188,9 @@ __EXPORT void board_peripheral_reset(int ms) __EXPORT void stm32_boardinitialize(void) { - /* configure the GPIO pins to outputs and keep them low */ - stm32_configgpio(GPIO_GPIO0_OUTPUT); - stm32_configgpio(GPIO_GPIO1_OUTPUT); - stm32_configgpio(GPIO_GPIO2_OUTPUT); - stm32_configgpio(GPIO_GPIO3_OUTPUT); - stm32_configgpio(GPIO_GPIO4_OUTPUT); - stm32_configgpio(GPIO_GPIO5_OUTPUT); + /* Reset all PWM to Low outputs */ + + board_on_reset(-1); /* configure LEDs */ board_autoled_initialize();