1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-25 17:25:20 +03:00

Merge pull request #7754 from mikeller/fix_burst_dshot_without_dma

Fixed burst Dshot for pins that have no DMA available.
This commit is contained in:
Michael Keller 2019-03-12 00:27:26 +13:00 committed by GitHub
commit 0deca9c6f5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 15 deletions

View file

@ -216,27 +216,32 @@ void pwmDshotMotorHardwareConfig(const timerHardware_t *timerHardware, uint8_t m
#define DMAINIT dmaInitStruct #define DMAINIT dmaInitStruct
#endif #endif
dmaStream_t *dmaRef;
#if defined(STM32F4)
uint32_t dmaChannel;
#endif
#if defined(USE_DMA_SPEC) #if defined(USE_DMA_SPEC)
const dmaChannelSpec_t *dmaSpec = dmaGetChannelSpecByTimer(timerHardware); const dmaChannelSpec_t *dmaSpec = dmaGetChannelSpecByTimer(timerHardware);
if (dmaSpec == NULL) { if (dmaSpec != NULL) {
return; dmaRef = dmaSpec->ref;
}
dmaStream_t *dmaRef = dmaSpec->ref;
#if defined(STM32F4) #if defined(STM32F4)
uint32_t dmaChannel = dmaSpec->channel; dmaChannel = dmaSpec->channel;
#endif #endif
}
#else #else
dmaStream_t *dmaRef = timerHardware->dmaRef; dmaRef = timerHardware->dmaRef;
#if defined(STM32F4) #if defined(STM32F4)
uint32_t dmaChannel = timerHardware->dmaChannel; dmaChannel = timerHardware->dmaChannel;
#endif #endif
#endif #endif
#ifdef USE_DSHOT_DMAR #ifdef USE_DSHOT_DMAR
if (useBurstDshot) { if (useBurstDshot) {
dmaRef = timerHardware->dmaTimUPRef; dmaRef = timerHardware->dmaTimUPRef;
#if defined(STM32F4)
dmaChannel = timerHardware->dmaTimUPChannel;
#endif
} }
#endif #endif

View file

@ -200,23 +200,24 @@ void pwmDshotMotorHardwareConfig(const timerHardware_t *timerHardware, uint8_t m
#define DMAINIT dmaInitStruct #define DMAINIT dmaInitStruct
#endif #endif
DMA_Stream_TypeDef *dmaRef;
uint32_t dmaChannel;
#if defined(USE_DMA_SPEC) #if defined(USE_DMA_SPEC)
const dmaChannelSpec_t *dmaSpec = dmaGetChannelSpecByTimer(timerHardware); const dmaChannelSpec_t *dmaSpec = dmaGetChannelSpecByTimer(timerHardware);
if (dmaSpec == NULL) { if (dmaSpec != NULL) {
return; dmaRef = dmaSpec->ref;
dmaChannel = dmaSpec->channel;
} }
DMA_Stream_TypeDef *dmaRef = dmaSpec->ref;
uint32_t dmaChannel = dmaSpec->channel;
#else #else
DMA_Stream_TypeDef *dmaRef = timerHardware->dmaRef; dmaRef = timerHardware->dmaRef;
uint32_t dmaChannel = timerHardware->dmaChannel; dmaChannel = timerHardware->dmaChannel;
#endif #endif
#ifdef USE_DSHOT_DMAR #ifdef USE_DSHOT_DMAR
if (useBurstDshot) { if (useBurstDshot) {
dmaRef = timerHardware->dmaTimUPRef; dmaRef = timerHardware->dmaTimUPRef;
dmaChannel = timerHardware->dmaTimUPChannel;
} }
#endif #endif