2024-08-27 05:12 AM - last edited on 2024-09-04 03:50 AM by SofLit
STM32H750 Discovery Kit board, Timer 1, Ch1 (PA8 output)
I used direct access to timer registers as a HAL library and the result was similar.
I can receive 10 MHz with direct access to register and TIM1->PSC = 10;
But when I set TIM1->PSC = 1 I don’t receive any signal from Timer1 with the next script
"HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);
RCC->APB2ENR |= RCC_APB2ENR_TIM1EN;
TIM1->CR1 &= ~TIM_CR1_CEN;
TIM1->PSC = 10;
TIM1->ARR = 1;
TIM1->CCMR1 &= ~TIM_CCMR1_OC1M;
TIM1->CCMR1 |= TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2;
TIM1->CCMR1 |= TIM_CCMR1_OC1PE;
TIM1->CCR1 = 1;
TIM1->CCER |= TIM_CCER_CC1E;
TIM1->CR1 |= TIM_CR1_ARPE;
TIM1->BDTR |= TIM_BDTR_MOE;
TIM1->CR1 |= TIM_CR1_CEN;
RCC->AHB4ENR |= RCC_AHB4ENR_GPIOAEN;
GPIOA->MODER &= ~GPIO_MODER_MODE8_Msk; // Clear bits
GPIOA->MODER |= GPIO_MODER_MODE8_1; // Set to alternate function mode
GPIOA->AFR[1] &= ~GPIO_AFRH_AFSEL8_Msk; // Clear AF selection for PA8
GPIOA->AFR[1] |= 1 << GPIO_AFRH_AFSEL8_Pos; // Set AF1 for PA8
I also adjusted A8 for RCC_MCO_1 and received finally 100 MHz, so I can confirm that my oscilloscope works properly.
And I found here that is possible to make 100 MHz for the timer for STM32H7 via timer and PWM
my settings are here
and the same problem for other Timers
as example
HAL_TIM_PWM_Start(&htim15, TIM_CHANNEL_2)
static void MX_TIM15_Init(void)
{
/* USER CODE BEGIN TIM15_Init 0 */
/* USER CODE END TIM15_Init 0 */
TIM_ClockConfigTypeDef sClockSourceConfig = {0};
TIM_MasterConfigTypeDef sMasterConfig = {0};
TIM_OC_InitTypeDef sConfigOC = {0};
TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0};
/* USER CODE BEGIN TIM15_Init 1 */
/* USER CODE END TIM15_Init 1 */
htim15.Instance = TIM15;
htim15.Init.Prescaler = 0;
htim15.Init.CounterMode = TIM_COUNTERMODE_UP;
htim15.Init.Period = 2;
htim15.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim15.Init.RepetitionCounter = 0;
htim15.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
if (HAL_TIM_Base_Init(&htim15) != HAL_OK)
{
Error_Handler();
}
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
if (HAL_TIM_ConfigClockSource(&htim15, &sClockSourceConfig) != HAL_OK)
{
Error_Handler();
}
if (HAL_TIM_PWM_Init(&htim15) != HAL_OK)
{
Error_Handler();
}
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
if (HAL_TIMEx_MasterConfigSynchronization(&htim15, &sMasterConfig) != HAL_OK)
{
Error_Handler();
}
sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigOC.Pulse = 1;
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
if (HAL_TIM_PWM_ConfigChannel(&htim15, &sConfigOC, TIM_CHANNEL_2) != HAL_OK)
{
Error_Handler();
}
sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE;
sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE;
sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF;
sBreakDeadTimeConfig.DeadTime = 0;
sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE;
sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;
sBreakDeadTimeConfig.BreakFilter = 0;
sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;
if (HAL_TIMEx_ConfigBreakDeadTime(&htim15, &sBreakDeadTimeConfig) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN TIM15_Init 2 */
/* USER CODE END TIM15_Init 2 */
HAL_TIM_MspPostInit(&htim15);
}
Solved! Go to Solution.
2024-08-27 06:11 AM
You can change it in the GPIO tab on the left.
2024-08-27 05:35 AM
Make sure pins are set to very high frequency. I bet the signal is there but with slow edges. What oscilloscope are you using?
2024-08-27 05:55 AM
Hello, thank you, I use PicoScope6404D (500 Mhz)
what do you mean about - "Make sure pins are set to very high frequency. " I use a timer and PWM and made only "Fast Mode" - Enable
2024-08-27 06:03 AM - edited 2024-08-27 06:03 AM
I dont have access to GPIO via Cube
2024-08-27 06:11 AM
You can change it in the GPIO tab on the left.
2024-08-27 06:17 AM - edited 2024-08-27 06:18 AM
ohhhh, it is works now, thank you so much, my god how did I miss this!!