diff --git a/src/main/drivers/light_ws2811strip.c b/src/main/drivers/light_ws2811strip.c index 6c8f2bb18a..b41dc21c9e 100644 --- a/src/main/drivers/light_ws2811strip.c +++ b/src/main/drivers/light_ws2811strip.c @@ -39,7 +39,11 @@ #include "drivers/dma.h" #include "drivers/light_ws2811strip.h" +#if defined(STM32F4) +uint32_t ledStripDMABuffer[WS2811_DMA_BUFFER_SIZE]; +#else uint8_t ledStripDMABuffer[WS2811_DMA_BUFFER_SIZE]; +#endif volatile uint8_t ws2811LedDataTransferInProgress = 0; static hsvColor_t ledColorBuffer[WS2811_LED_STRIP_LENGTH]; diff --git a/src/main/drivers/light_ws2811strip.h b/src/main/drivers/light_ws2811strip.h index 853ac7acbc..c24712502c 100644 --- a/src/main/drivers/light_ws2811strip.h +++ b/src/main/drivers/light_ws2811strip.h @@ -51,5 +51,9 @@ void setStripColors(const hsvColor_t *colors); bool isWS2811LedStripReady(void); +#if defined(STM32F4) +extern uint32_t ledStripDMABuffer[WS2811_DMA_BUFFER_SIZE]; +#else extern uint8_t ledStripDMABuffer[WS2811_DMA_BUFFER_SIZE]; +#endif extern volatile uint8_t ws2811LedDataTransferInProgress; diff --git a/src/main/drivers/light_ws2811strip_stm32f4xx.c b/src/main/drivers/light_ws2811strip_stm32f4xx.c index 63bcd9cee6..d1ea43d7ae 100644 --- a/src/main/drivers/light_ws2811strip_stm32f4xx.c +++ b/src/main/drivers/light_ws2811strip_stm32f4xx.c @@ -50,7 +50,7 @@ static void WS2811_DMA_IRQHandler(dmaChannelDescriptor_t *descriptor) if (DMA_GET_FLAG_STATUS(descriptor, DMA_IT_TCIF)) { ws2811LedDataTransferInProgress = 0; DMA_Cmd(descriptor->stream, DISABLE); - TIM_DMACmd(TIM5, TIM_DMA_CC1, DISABLE); + TIM_DMACmd(WS2811_TIMER, timDMASource, DISABLE); DMA_CLEAR_FLAG(descriptor, DMA_IT_TCIF); } }