Skip to content

Commit 417507e

Browse files
committed
Update stm32_mcu.cpp
1 parent 5dbf3d0 commit 417507e

File tree

1 file changed

+76
-79
lines changed

1 file changed

+76
-79
lines changed

src/drivers/hardware_specific/stm32/stm32_mcu.cpp

Lines changed: 76 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -669,106 +669,103 @@ TIM_HandleTypeDef htim8;
669669

670670
void configure8PWM(void)
671671
{
672-
673672
HAL_Init();
674673

675674
GPIO_InitTypeDef GPIO_InitStruct = {0};
676-
675+
677676
// Enable clock for TIM1 and TIM8
678677
__HAL_RCC_TIM1_CLK_ENABLE();
679678
__HAL_RCC_TIM8_CLK_ENABLE();
680-
679+
681680
// 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;
683682
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
684683
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+
690687
// Configure TIM8 pins
691-
GPIO_InitStruct.Pin = GPIO_PIN_6 | GPIO_PIN_7;
688+
GPIO_InitStruct.Pin = GPIO_PIN_0;
692689
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
693690
GPIO_InitStruct.Pull = GPIO_NOPULL;
694691
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+
697697
// Set TIM1 and TIM8 dead time values to 50 ns
698698
TIM_MasterConfigTypeDef sMasterConfig = {0};
699699
TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0};
700700
htim1.Instance = TIM1;
701701
htim1.Init.Prescaler = 0;
702702
htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
703-
htim1.Init.Period = 100;
703+
htim1.Init.Period = 255;
704704
htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
705-
htim1.Init.RepetitionCounter= 0;
705+
htim1.Init.RepetitionCounter = 0;
706706
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+
772769

773770

774771

0 commit comments

Comments
 (0)