@@ -669,106 +669,103 @@ TIM_HandleTypeDef htim8;
669
669
670
670
void configure8PWM (void )
671
671
{
672
-
673
672
HAL_Init ();
674
673
675
674
GPIO_InitTypeDef GPIO_InitStruct = {0 };
676
-
675
+
677
676
// Enable clock for TIM1 and TIM8
678
677
__HAL_RCC_TIM1_CLK_ENABLE ();
679
678
__HAL_RCC_TIM8_CLK_ENABLE ();
680
-
679
+
681
680
// Configure TIM1 pins
682
- GPIO_InitStruct.Pin = GPIO_PIN_8 | GPIO_PIN_7 | GPIO_PIN_9 | GPIO_PIN_6 | GPIO_PIN_0 | GPIO_PIN_1 ;
681
+ GPIO_InitStruct.Pin = GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13 ;
683
682
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
684
683
GPIO_InitStruct.Pull = GPIO_NOPULL;
685
- GPIO_InitStruct.Alternate = GPIO_AF6_TIM1;
686
- HAL_GPIO_Init (GPIOA, &GPIO_InitStruct);
687
- GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1;
688
- HAL_GPIO_Init (GPIOB, &GPIO_InitStruct);
689
-
684
+ GPIO_InitStruct.Alternate = GPIO_AF6_TIM1;
685
+ HAL_GPIO_Init (GPIOE, &GPIO_InitStruct);
686
+
690
687
// Configure TIM8 pins
691
- GPIO_InitStruct.Pin = GPIO_PIN_6 | GPIO_PIN_7 ;
688
+ GPIO_InitStruct.Pin = GPIO_PIN_0 ;
692
689
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
693
690
GPIO_InitStruct.Pull = GPIO_NOPULL;
694
691
GPIO_InitStruct.Alternate = GPIO_AF3_TIM8;
695
- HAL_GPIO_Init (GPIOC, &GPIO_InitStruct);
696
-
692
+ HAL_GPIO_Init (GPIOB, &GPIO_InitStruct);
693
+
694
+ GPIO_InitStruct.Pin = GPIO_PIN_14;
695
+ HAL_GPIO_Init (GPIOA, &GPIO_InitStruct);
696
+
697
697
// Set TIM1 and TIM8 dead time values to 50 ns
698
698
TIM_MasterConfigTypeDef sMasterConfig = {0 };
699
699
TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0 };
700
700
htim1.Instance = TIM1;
701
701
htim1.Init .Prescaler = 0 ;
702
702
htim1.Init .CounterMode = TIM_COUNTERMODE_UP;
703
- htim1.Init .Period = 100 ;
703
+ htim1.Init .Period = 255 ;
704
704
htim1.Init .ClockDivision = TIM_CLOCKDIVISION_DIV1;
705
- htim1.Init .RepetitionCounter = 0 ;
705
+ htim1.Init .RepetitionCounter = 0 ;
706
706
HAL_TIM_PWM_Init (&htim1);
707
- sMasterConfig .MasterOutputTrigger = TIM_TRGO_RESET;
708
- sMasterConfig .MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
709
- sBreakDeadTimeConfig .OffStateRunMode = TIM_OSSR_DISABLE;
710
- sBreakDeadTimeConfig .OffStateIDLEMode = TIM_OSSI_DISABLE;
711
- sBreakDeadTimeConfig .LockLevel = TIM_LOCKLEVEL_OFF;
712
- sBreakDeadTimeConfig .DeadTime = 50 ;
713
- sBreakDeadTimeConfig .BreakState = TIM_BREAK_DISABLE;
714
- sBreakDeadTimeConfig .BreakPolarity = TIM_BREAKPOLARITY_HIGH;
715
- sBreakDeadTimeConfig .AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;
716
- HAL_TIMEx_ConfigBreakDeadTime (&htim1, &sBreakDeadTimeConfig );
717
- HAL_TIMEx_MasterConfigSynchronization (&htim1, &sMasterConfig );
718
-
719
- // Continue with configuring TIM8
720
- htim8.Instance = TIM8;
721
- htim8.Init .Prescaler = 0 ;
722
- htim8.Init .CounterMode = TIM_COUNTERMODE_UP;
723
- htim8.Init .Period = 100 ;
724
- htim8.Init .ClockDivision = TIM_CLOCKDIVISION_DIV1;
725
- htim8.Init .RepetitionCounter = 0 ;
726
- HAL_TIM_PWM_Init (&htim8);
727
- HAL_TIMEx_ConfigBreakDeadTime (&htim8, &sBreakDeadTimeConfig );
728
- HAL_TIMEx_MasterConfigSynchronization (&htim8, &sMasterConfig );
729
-
730
- // Configure TIM1 and TIM8 PWM channels
731
- TIM_OC_InitTypeDef sConfigOC = {0 };
732
- sConfigOC .OCMode = TIM_OCMODE_PWM1;
733
- sConfigOC .Pulse = 0 ;
734
- sConfigOC .OCPolarity = TIM_OCPOLARITY_HIGH;
735
- sConfigOC .OCNPolarity = TIM_OCNPOLARITY_HIGH;
736
- sConfigOC .OCFastMode = TIM_OCFAST_DISABLE;
737
- sConfigOC .OCIdleState = TIM_OCIDLESTATE_RESET;
738
- sConfigOC .OCNIdleState = TIM_OCNIDLESTATE_RESET;
739
-
740
- // TIM1 Channel 1
741
- HAL_TIM_PWM_ConfigChannel (&htim1, &sConfigOC , TIM_CHANNEL_1);
742
- HAL_TIM_PWM_Start (&htim1, TIM_CHANNEL_1);
743
-
744
- // TIM1 Channel 2
745
- HAL_TIM_PWM_ConfigChannel (&htim1, &sConfigOC , TIM_CHANNEL_2);
746
- HAL_TIM_PWM_Start (&htim1, TIM_CHANNEL_2);
747
-
748
- // TIM1 Channel 3
749
- HAL_TIM_PWM_ConfigChannel (&htim1, &sConfigOC , TIM_CHANNEL_3);
750
- HAL_TIM_PWM_Start (&htim1, TIM_CHANNEL_3);
751
-
752
- // TIM1 Channel 4
753
- HAL_TIM_PWM_ConfigChannel (&htim1, &sConfigOC , TIM_CHANNEL_4);
754
- HAL_TIM_PWM_Start (&htim1, TIM_CHANNEL_4);
755
-
756
- // TIM1 Channel 5
757
- HAL_TIM_PWM_ConfigChannel (&htim1, &sConfigOC , TIM_CHANNEL_5);
758
- HAL_TIM_PWM_Start (&htim1, TIM_CHANNEL_5);
759
-
760
- // TIM1 Channel 6
761
- HAL_TIM_PWM_ConfigChannel (&htim1, &sConfigOC , TIM_CHANNEL_6);
762
- HAL_TIM_PWM_Start (&htim1, TIM_CHANNEL_6);
763
-
764
- // TIM8 Channel 1
765
- HAL_TIM_PWM_ConfigChannel (&htim8, &sConfigOC , TIM_CHANNEL_1);
766
- HAL_TIM_PWM_Start (&htim8, TIM_CHANNEL_1);
767
-
768
- // TIM8 Channel 2
769
- HAL_TIM_PWM_ConfigChannel (&htim8, &sConfigOC , TIM_CHANNEL_2);
770
- HAL_TIM_PWM_Start (&htim8, TIM_CHANNEL_2);
771
- }
707
+
708
+
709
+ htim8.Instance = TIM8;
710
+ htim8.Init .Prescaler = 0 ;
711
+ htim8.Init .CounterMode = TIM_COUNTERMODE_UP;
712
+ htim8.Init .Period = 255 ;
713
+ htim8.Init .ClockDivision = TIM_CLOCKDIVISION_DIV1;
714
+ htim8.Init .RepetitionCounter = 0 ;
715
+ HAL_TIM_PWM_Init (&htim8);
716
+
717
+ sMasterConfig .MasterOutputTrigger = TIM_TRGO_RESET;
718
+ sMasterConfig .MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
719
+ HAL_TIMEx_MasterConfigSynchronization (&htim1, &sMasterConfig );
720
+
721
+ sBreakDeadTimeConfig .OffStateRunMode = TIM_OSSR_DISABLE;
722
+ sBreakDeadTimeConfig .OffStateIDLEMode = TIM_OSSI_DISABLE;
723
+ sBreakDeadTimeConfig .LockLevel = TIM_LOCKLEVEL_OFF;
724
+ sBreakDeadTimeConfig .DeadTime = 50 ;
725
+ sBreakDeadTimeConfig .BreakState = TIM_BREAK_DISABLE;
726
+ sBreakDeadTimeConfig .BreakPolarity = TIM_BREAKPOLARITY_HIGH;
727
+ sBreakDeadTimeConfig .AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;
728
+ HAL_TIMEx_ConfigBreakDeadTime (&htim1, &sBreakDeadTimeConfig );
729
+ HAL_TIMEx_ConfigBreakDeadTime (&htim8, &sBreakDeadTimeConfig );
730
+
731
+ // Configure PWM mode for TIM1 channels 1-6
732
+ TIM_OC_InitTypeDef sConfigOC = {0 };
733
+ sConfigOC .OCMode = TIM_OCMODE_PWM1;
734
+ sConfigOC .Pulse = 0 ;
735
+ sConfigOC .OCPolarity = TIM_OCPOLARITY_HIGH;
736
+ sConfigOC .OCFastMode = TIM_OCFAST_DISABLE;
737
+ HAL_TIM_PWM_ConfigChannel (&htim1, &sConfigOC , TIM_CHANNEL_1);
738
+ HAL_TIM_PWM_ConfigChannel (&htim1, &sConfigOC , TIM_CHANNEL_2);
739
+ HAL_TIM_PWM_ConfigChannel (&htim1, &sConfigOC , TIM_CHANNEL_3);
740
+ HAL_TIM_PWM_ConfigChannel (&htim1, &sConfigOC , TIM_CHANNEL_4);
741
+ HAL_TIM_PWM_ConfigChannel (&htim1, &sConfigOC , TIM_CHANNEL_5);
742
+ HAL_TIM_PWM_ConfigChannel (&htim1, &sConfigOC , TIM_CHANNEL_6);
743
+
744
+ // Configure PWM mode for TIM8 channel 1
745
+ sConfigOC .OCMode = TIM_OCMODE_PWM1;
746
+ sConfigOC .Pulse = 0 ;
747
+ sConfigOC .OCPolarity = TIM_OCPOLARITY_HIGH;
748
+ sConfigOC .OCFastMode = TIM_OCFAST_DISABLE;
749
+ HAL_TIM_PWM_ConfigChannel (&htim8, &sConfigOC , TIM_CHANNEL_1);
750
+
751
+ // Start PWM output
752
+ HAL_TIM_PWM_Start (&htim1, TIM_CHANNEL_1);
753
+ HAL_TIM_PWM_Start (&htim1, TIM_CHANNEL_2);
754
+ HAL_TIM_PWM_Start (&htim1, TIM_CHANNEL_3);
755
+ HAL_TIM_PWM_Start (&htim1, TIM_CHANNEL_4);
756
+ HAL_TIM_PWM_Start (&htim1, TIM_CHANNEL_5);
757
+ HAL_TIM_PWM_Start (&htim1, TIM_CHANNEL_6);
758
+ HAL_TIM_PWM_Start (&htim8, TIM_CHANNEL_1);
759
+
760
+
761
+ }
762
+
763
+
764
+
765
+
766
+
767
+
768
+
772
769
773
770
774
771
0 commit comments