Skip to main content
Visitor II
April 22, 2025
Solved

800KHz Frequency generation using STM32G070RBT6

  • April 22, 2025
  • 2 replies
  • 474 views

I am trying to get 800KHz frequency with Timer 3 and timer clock is 64MHz and i am using below setting to initalize the timer, but its frequency is 666.66KHz. Pls provide a solution of this problem ASAP......

 

static void MX_TIM3_Init(void)

{



/* USER CODE BEGIN TIM3_Init 0 */



/* USER CODE END TIM3_Init 0 */



TIM_ClockConfigTypeDef sClockSourceConfig = {0};

TIM_MasterConfigTypeDef sMasterConfig = {0};

TIM_OC_InitTypeDef sConfigOC = {0};



/* USER CODE BEGIN TIM3_Init 1 */



/* USER CODE END TIM3_Init 1 */

htim3.Instance = TIM3;

htim3.Init.Prescaler = 0;

htim3.Init.CounterMode = TIM_COUNTERMODE_UP;

htim3.Init.Period = 79;

htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;

htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;

if (HAL_TIM_Base_Init(&htim3) != HAL_OK)

{

Error_Handler();

}

sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;

if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK)

{

Error_Handler();

}

if (HAL_TIM_PWM_Init(&htim3) != HAL_OK)

{

Error_Handler();

}

sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;

sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;

if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK)

{

Error_Handler();

}

sConfigOC.OCMode = TIM_OCMODE_PWM1;

sConfigOC.Pulse = 0;

sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;

sConfigOC.OCFastMode = TIM_OCFAST_ENABLE;

if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_3) != HAL_OK)

{

Error_Handler();

}

/* USER CODE BEGIN TIM3_Init 2 */



/* USER CODE END TIM3_Init 2 */

HAL_TIM_MspPostInit(&htim3);



}
    This topic has been closed for replies.
    Best answer by TDK

    This is quantization error in your logic analyzer. Increase your sampling rate to max or take the average of many different periods.

    The timer settings and the output frequency are correct--look at the long term trend.

    2 replies

    TDKAnswer
    Super User
    April 22, 2025

    This is quantization error in your logic analyzer. Increase your sampling rate to max or take the average of many different periods.

    The timer settings and the output frequency are correct--look at the long term trend.

    ST Employee
    April 22, 2025

    Hello,

    there should be set sConfigOC.Pulse value to non zero value to generate PWM on output pin. Try to set

    sConfigOC.Pulse = 39;

     (50 % duty cycle).