1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-24 16:55:36 +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
#endif
dmaStream_t *dmaRef;
#if defined(STM32F4)
uint32_t dmaChannel;
#endif
#if defined(USE_DMA_SPEC)
const dmaChannelSpec_t *dmaSpec = dmaGetChannelSpecByTimer(timerHardware);
if (dmaSpec == NULL) {
return;
}
dmaStream_t *dmaRef = dmaSpec->ref;
if (dmaSpec != NULL) {
dmaRef = dmaSpec->ref;
#if defined(STM32F4)
uint32_t dmaChannel = dmaSpec->channel;
dmaChannel = dmaSpec->channel;
#endif
}
#else
dmaStream_t *dmaRef = timerHardware->dmaRef;
dmaRef = timerHardware->dmaRef;
#if defined(STM32F4)
uint32_t dmaChannel = timerHardware->dmaChannel;
dmaChannel = timerHardware->dmaChannel;
#endif
#endif
#ifdef USE_DSHOT_DMAR
if (useBurstDshot) {
dmaRef = timerHardware->dmaTimUPRef;
#if defined(STM32F4)
dmaChannel = timerHardware->dmaTimUPChannel;
#endif
}
#endif

View file

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