From 92bcd91790cf2783c51b5eedc7b87fd6484c593d Mon Sep 17 00:00:00 2001 From: blckmn Date: Mon, 14 Nov 2016 08:56:42 +1100 Subject: [PATCH] Added safety for timer hardware items with no DMA. --- src/main/drivers/pwm_output_stm32f3xx.c | 5 +++++ src/main/drivers/pwm_output_stm32f4xx.c | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/src/main/drivers/pwm_output_stm32f3xx.c b/src/main/drivers/pwm_output_stm32f3xx.c index a6d1501be8..0de0c2eda9 100644 --- a/src/main/drivers/pwm_output_stm32f3xx.c +++ b/src/main/drivers/pwm_output_stm32f3xx.c @@ -184,6 +184,11 @@ void pwmDigitalMotorHardwareConfig(const timerHardware_t *timerHardware, uint8_t DMA_Channel_TypeDef *channel = timerHardware->dmaChannel; + if (channel == NULL) { + /* trying to use a non valid channel */ + return; + } + dmaInit(timerHardware->dmaIrqHandler, OWNER_MOTOR, RESOURCE_INDEX(motorIndex)); dmaSetHandler(timerHardware->dmaIrqHandler, motor_DMA_IRQHandler, NVIC_BUILD_PRIORITY(1, 2), motorIndex); diff --git a/src/main/drivers/pwm_output_stm32f4xx.c b/src/main/drivers/pwm_output_stm32f4xx.c index 48782f1b6b..8a391112ea 100644 --- a/src/main/drivers/pwm_output_stm32f4xx.c +++ b/src/main/drivers/pwm_output_stm32f4xx.c @@ -182,6 +182,11 @@ void pwmDigitalMotorHardwareConfig(const timerHardware_t *timerHardware, uint8_t DMA_Stream_TypeDef *stream = timerHardware->dmaStream; + if (stream == NULL) { + /* trying to use a non valid stream */ + return; + } + dmaInit(timerHardware->dmaIrqHandler, OWNER_MOTOR, RESOURCE_INDEX(motorIndex)); dmaSetHandler(timerHardware->dmaIrqHandler, motor_DMA_IRQHandler, NVIC_BUILD_PRIORITY(1, 2), motorIndex);