mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-16 12:55:19 +03:00
Merge pull request #10383 from mluessi/ml_h7_dshot_opt
This commit is contained in:
commit
57c9c12781
2 changed files with 16 additions and 2 deletions
|
@ -131,3 +131,6 @@ void IOInitGlobal(void);
|
||||||
typedef void (*IOTraverseFuncPtr_t)(IO_t io);
|
typedef void (*IOTraverseFuncPtr_t)(IO_t io);
|
||||||
|
|
||||||
void IOTraversePins(IOTraverseFuncPtr_t func);
|
void IOTraversePins(IOTraverseFuncPtr_t func);
|
||||||
|
|
||||||
|
GPIO_TypeDef* IO_GPIO(IO_t io);
|
||||||
|
uint16_t IO_Pin(IO_t io);
|
||||||
|
|
|
@ -117,13 +117,24 @@ FAST_CODE static void pwmDshotSetDirectionInput(
|
||||||
timer->ARR = 0xffffffff;
|
timer->ARR = 0xffffffff;
|
||||||
|
|
||||||
#ifdef STM32H7
|
#ifdef STM32H7
|
||||||
IOConfigGPIO(motor->io, GPIO_MODE_OUTPUT_PP);
|
// Configure pin as GPIO output to avoid glitch during timer configuration
|
||||||
|
uint32_t pin = IO_Pin(motor->io);
|
||||||
|
LL_GPIO_SetPinMode(IO_GPIO(motor->io), pin, LL_GPIO_MODE_OUTPUT);
|
||||||
|
LL_GPIO_SetPinSpeed(IO_GPIO(motor->io), pin, LL_GPIO_SPEED_FREQ_LOW); // Needs to be low
|
||||||
|
LL_GPIO_SetPinPull(IO_GPIO(motor->io), pin, LL_GPIO_PULL_NO);
|
||||||
|
LL_GPIO_SetPinOutputType(IO_GPIO(motor->io), pin, LL_GPIO_OUTPUT_PUSHPULL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
LL_TIM_IC_Init(timer, motor->llChannel, &motor->icInitStruct);
|
LL_TIM_IC_Init(timer, motor->llChannel, &motor->icInitStruct);
|
||||||
|
|
||||||
#ifdef STM32H7
|
#ifdef STM32H7
|
||||||
IOConfigGPIOAF(motor->io, motor->iocfg, timerHardware->alternateFunction);
|
// Configure pin back to timer
|
||||||
|
LL_GPIO_SetPinMode(IO_GPIO(motor->io), IO_Pin(motor->io), LL_GPIO_MODE_ALTERNATE);
|
||||||
|
if (IO_Pin(motor->io) & 0xFF) {
|
||||||
|
LL_GPIO_SetAFPin_0_7(IO_GPIO(motor->io), IO_Pin(motor->io), timerHardware->alternateFunction);
|
||||||
|
} else {
|
||||||
|
LL_GPIO_SetAFPin_8_15(IO_GPIO(motor->io), IO_Pin(motor->io), timerHardware->alternateFunction);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
motor->dmaInitStruct.Direction = LL_DMA_DIRECTION_PERIPH_TO_MEMORY;
|
motor->dmaInitStruct.Direction = LL_DMA_DIRECTION_PERIPH_TO_MEMORY;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue