Skip to content

Commit 014ab05

Browse files
committed
Update stm32_mcu.cpp
1 parent cf4bfec commit 014ab05

File tree

1 file changed

+30
-32
lines changed

1 file changed

+30
-32
lines changed

src/drivers/hardware_specific/stm32/stm32_mcu.cpp

Lines changed: 30 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -664,33 +664,38 @@ void* _configure3PWM(long pwm_frequency,const int pinA, const int pinB, const in
664664
#include "stm32g4xx_hal_tim.h"
665665
#include "stm32g4xx_hal_tim_ex.h"
666666

667+
// Declare timer handles for TIM1 and TIM8
667668
TIM_HandleTypeDef htim1;
668669
TIM_HandleTypeDef htim8;
669670

671+
// Function to configure PWM output on TIM1 channels 1-6 and TIM8 channel 1
670672
void configure8PWM(void)
671673
{
674+
// Initialize HAL library
672675
HAL_Init();
673676

677+
// GPIO pin initialization struct
674678
GPIO_InitTypeDef GPIO_InitStruct = {0};
675679

676680
// Enable clock for TIM1 and TIM8
677681
__HAL_RCC_TIM1_CLK_ENABLE();
678682
__HAL_RCC_TIM8_CLK_ENABLE();
679683

680-
// Configure TIM1 pins
684+
// Configure TIM1 pins for alternate function mode with push-pull output
681685
GPIO_InitStruct.Pin = GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13;
682686
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
683687
GPIO_InitStruct.Pull = GPIO_NOPULL;
684688
GPIO_InitStruct.Alternate = GPIO_AF6_TIM1;
685689
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
686690

687-
// Configure TIM8 pins
691+
// Configure TIM8 pins for alternate function mode with push-pull output
688692
GPIO_InitStruct.Pin = GPIO_PIN_0;
689693
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
690694
GPIO_InitStruct.Pull = GPIO_NOPULL;
691695
GPIO_InitStruct.Alternate = GPIO_AF3_TIM8;
692696
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
693697

698+
// Configure additional TIM8 pin for PWM output
694699
GPIO_InitStruct.Pin = GPIO_PIN_14;
695700
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
696701

@@ -725,42 +730,35 @@ void configure8PWM(void)
725730
sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;
726731
sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;
727732
HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig);
728-
HAL_TIMEx_ConfigBreakDeadTime(&htim8, &sBreakDeadTimeConfig);
733+
729734

730-
// Configure PWM mode for TIM1 channels 1-6
731-
TIM_OC_InitTypeDef sConfigOC = {0};
732-
sConfigOC.OCMode = TIM_OCMODE_PWM1;
733-
sConfigOC.Pulse = 0;
734-
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
735-
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
736-
sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
737-
738-
HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1);
739-
HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2);
740-
HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3);
741-
HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_4);
742-
HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_5);
743-
HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_6);
744735

745-
// Configure PWM mode for TIM8 channel 1
736+
// Configure TIM1 channels 1-6 for PWM output
737+
TIM_OC_InitTypeDef sConfigOC = {0};
746738
sConfigOC.OCMode = TIM_OCMODE_PWM1;
747739
sConfigOC.Pulse = 0;
748740
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
749741
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
750-
sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
751-
752-
HAL_TIM_PWM_ConfigChannel(&htim8, &sConfigOC, TIM_CHANNEL_1);
753-
754-
// Start TIM1 and TIM8 PWM signals
755-
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);
756-
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2);
757-
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_3);
758-
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_4);
759-
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_5);
760-
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_6);
761-
HAL_TIM_PWM_Start(&htim8, TIM_CHANNEL_1);
762-
763-
742+
HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, LL_TIM_CHANNEL_CH1);
743+
HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, LL_TIM_CHANNEL_CH1N);
744+
HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, LL_TIM_CHANNEL_CH2);
745+
HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, LL_TIM_CHANNEL_CH2N);
746+
HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, LL_TIM_CHANNEL_CH3);
747+
HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, LL_TIM_CHANNEL_CH3N);
748+
749+
// Configure PWM output on TIM8 channel 1 and additional channel
750+
HAL_TIM_PWM_ConfigChannel(&htim8, &sConfigOC, LL_TIM_CHANNEL_CH2N);
751+
HAL_TIM_PWM_ConfigChannel(&htim8, &sConfigOC, LL_TIM_CHANNEL_CH2);
752+
753+
// Start TIM1 and TIM8 PWM outputs
754+
HAL_TIM_PWM_Start(&htim1, LL_TIM_CHANNEL_CH1);
755+
HAL_TIM_PWM_Start(&htim1, LL_TIM_CHANNEL_CH1N);
756+
HAL_TIM_PWM_Start(&htim1, LL_TIM_CHANNEL_CH2);
757+
HAL_TIM_PWM_Start(&htim1, LL_TIM_CHANNEL_CH2N);
758+
HAL_TIM_PWM_Start(&htim1, LL_TIM_CHANNEL_CH3);
759+
HAL_TIM_PWM_Start(&htim1, LL_TIM_CHANNEL_CH3N);
760+
HAL_TIM_PWM_Start(&htim8, LL_TIM_CHANNEL_CH2N);
761+
HAL_TIM_PWM_Start(&htim8, LL_TIM_CHANNEL_CH2);
764762
}
765763

766764

0 commit comments

Comments
 (0)