From 8731e4a00324e65e3945ebde0e4896de09e059a8 Mon Sep 17 00:00:00 2001 From: Dominic Clifton Date: Wed, 28 Aug 2019 16:56:03 +0200 Subject: [PATCH] Use CCM_CODE for DMA handlers on F3. This shaves a few cycles when handling the DSHOT telemetry responses. Fewer invalid packets. --- src/main/drivers/dma.c | 1 + src/main/drivers/dma.h | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/drivers/dma.c b/src/main/drivers/dma.c index c128ac1ac8..5521183adf 100644 --- a/src/main/drivers/dma.c +++ b/src/main/drivers/dma.c @@ -52,6 +52,7 @@ static dmaChannelDescriptor_t dmaDescriptors[DMA_LAST_HANDLER] = { /* * DMA IRQ Handlers */ + DEFINE_DMA_IRQ_HANDLER(1, 1, DMA1_CH1_HANDLER) DEFINE_DMA_IRQ_HANDLER(1, 2, DMA1_CH2_HANDLER) DEFINE_DMA_IRQ_HANDLER(1, 3, DMA1_CH3_HANDLER) diff --git a/src/main/drivers/dma.h b/src/main/drivers/dma.h index 691ea86d33..a865907248 100644 --- a/src/main/drivers/dma.h +++ b/src/main/drivers/dma.h @@ -168,7 +168,13 @@ typedef enum { .owner.resourceIndex = 0 \ } -#define DEFINE_DMA_IRQ_HANDLER(d, c, i) void DMA ## d ## _Channel ## c ## _IRQHandler(void) {\ +#if defined(USE_CCM_CODE) && defined(STM32F3) +#define DMA_HANDLER_CODE CCM_CODE +#else +#define DMA_HANDLER_CODE +#endif + +#define DEFINE_DMA_IRQ_HANDLER(d, c, i) DMA_HANDLER_CODE void DMA ## d ## _Channel ## c ## _IRQHandler(void) {\ const uint8_t index = DMA_IDENTIFIER_TO_INDEX(i); \ dmaCallbackHandlerFuncPtr handler = dmaDescriptors[index].irqHandlerCallback; \ if (handler) \