cancel
Showing results for 
Search instead for 
Did you mean: 

Setting MCO2 output on STM32G0

MAmem.1
Associate III

Hi,

I'm trying to get a clock output at 460.9 Khz on PB2 by setting the MCO2.

The PB2 pin is declared as follow:

static void MX_GPIO_Init(void)

{

 GPIO_InitTypeDef GPIO_InitStruct = {0};

 /* GPIO Ports Clock Enable */

 __HAL_RCC_GPIOB_CLK_ENABLE();

 /*Configure GPIO pin : PB2 */

 GPIO_InitStruct.Pin = GPIO_PIN_2;

 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;

 GPIO_InitStruct.Pull = GPIO_NOPULL;

 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;

 GPIO_InitStruct.Alternate = GPIO_AF3_MCO2;

 HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

}

Also SystemClock_Config is as follow:

void SystemClock_Config(void)

{

 RCC_OscInitTypeDef RCC_OscInitStruct = {0};

 RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

 /** Configure the main internal regulator output voltage

 */

 HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1);

 /** Initializes the RCC Oscillators according to the specified parameters

 * in the RCC_OscInitTypeDef structure.

 */

 RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;

 RCC_OscInitStruct.HSIState = RCC_HSI_ON;

 RCC_OscInitStruct.HSIDiv = RCC_HSI_DIV1;

 RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;

 RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;

 RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;

 RCC_OscInitStruct.PLL.PLLM = RCC_PLLM_DIV4;

 RCC_OscInitStruct.PLL.PLLN = 59;

 RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV16;

 RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV8;

 RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV4;

 if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)

 {

   Error_Handler();

 }

 /** Initializes the CPU, AHB and APB buses clocks

 */

 RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK

                             |RCC_CLOCKTYPE_PCLK1;

 RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;

 RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;

 RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;

 if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)

 {

   Error_Handler();

 }

 HAL_RCC_MCOConfig(RCC_MCO2, RCC_MCO2SOURCE_PLLPCLK, RCC_MCO2DIV_32);

}

but getting none on the PB2, what am I doing wrong ?

NB: I don't have any external crystal, only which to use internal clock HSI.

Thanks for your help

2 REPLIES 2
S.Ma
Principal

Here is an example in IRQ_SelfSettle.c of generating HSI prescaled output to MCO pin for STM32C0 (subset of all STM32), in case this gives clues before someone can answer better.

Read out and check/post content of relevant RCC and GPIO registers.

JW