@@ -664,33 +664,38 @@ void* _configure3PWM(long pwm_frequency,const int pinA, const int pinB, const in
664
664
#include " stm32g4xx_hal_tim.h"
665
665
#include " stm32g4xx_hal_tim_ex.h"
666
666
667
+ // Declare timer handles for TIM1 and TIM8
667
668
TIM_HandleTypeDef htim1;
668
669
TIM_HandleTypeDef htim8;
669
670
671
+ // Function to configure PWM output on TIM1 channels 1-6 and TIM8 channel 1
670
672
void configure8PWM (void )
671
673
{
674
+ // Initialize HAL library
672
675
HAL_Init ();
673
676
677
+ // GPIO pin initialization struct
674
678
GPIO_InitTypeDef GPIO_InitStruct = {0 };
675
679
676
680
// Enable clock for TIM1 and TIM8
677
681
__HAL_RCC_TIM1_CLK_ENABLE ();
678
682
__HAL_RCC_TIM8_CLK_ENABLE ();
679
683
680
- // Configure TIM1 pins
684
+ // Configure TIM1 pins for alternate function mode with push-pull output
681
685
GPIO_InitStruct.Pin = GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13;
682
686
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
683
687
GPIO_InitStruct.Pull = GPIO_NOPULL;
684
688
GPIO_InitStruct.Alternate = GPIO_AF6_TIM1;
685
689
HAL_GPIO_Init (GPIOE, &GPIO_InitStruct);
686
690
687
- // Configure TIM8 pins
691
+ // Configure TIM8 pins for alternate function mode with push-pull output
688
692
GPIO_InitStruct.Pin = GPIO_PIN_0;
689
693
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
690
694
GPIO_InitStruct.Pull = GPIO_NOPULL;
691
695
GPIO_InitStruct.Alternate = GPIO_AF3_TIM8;
692
696
HAL_GPIO_Init (GPIOB, &GPIO_InitStruct);
693
697
698
+ // Configure additional TIM8 pin for PWM output
694
699
GPIO_InitStruct.Pin = GPIO_PIN_14;
695
700
HAL_GPIO_Init (GPIOA, &GPIO_InitStruct);
696
701
@@ -725,42 +730,35 @@ void configure8PWM(void)
725
730
sBreakDeadTimeConfig .BreakPolarity = TIM_BREAKPOLARITY_HIGH;
726
731
sBreakDeadTimeConfig .AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;
727
732
HAL_TIMEx_ConfigBreakDeadTime (&htim1, &sBreakDeadTimeConfig );
728
- HAL_TIMEx_ConfigBreakDeadTime (&htim8, & sBreakDeadTimeConfig );
733
+
729
734
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);
744
735
745
- // Configure PWM mode for TIM8 channel 1
736
+ // Configure TIM1 channels 1-6 for PWM output
737
+ TIM_OC_InitTypeDef sConfigOC = {0 };
746
738
sConfigOC .OCMode = TIM_OCMODE_PWM1;
747
739
sConfigOC .Pulse = 0 ;
748
740
sConfigOC .OCPolarity = TIM_OCPOLARITY_HIGH;
749
741
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);
764
762
}
765
763
766
764
0 commit comments