STM32F4 reloj 60Mhz

0

Quiero configurar mi controlador STM32F446 su frecuencia de reloj a 60MHz. Pensé que podía hacerlo, pero sin resultados.

Estoy usando una placa de nucleo STM32F446. Utilicé STM32CubeMX para generar mi código. Después de que eso no funcionó, busqué en la web y encontré el mismo código (excepto los valores).

Si programo mi controlador con este código. Los valores de la frecuencia de reloj no son correctos, o mi controlador no hace nada.

¿Pueden ustedes ayudarme?

RCC_OscInitTypeDef RCC_OscInitStruct;
RCC_ClkInitTypeDef RCC_ClkInitStruct;

__PWR_CLK_ENABLE();

__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);

RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
RCC_OscInitStruct.HSICalibrationValue = 16;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
RCC_OscInitStruct.PLL.PLLM = 8;
RCC_OscInitStruct.PLL.PLLN = 60;
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
RCC_OscInitStruct.PLL.PLLQ = 2;
RCC_OscInitStruct.PLL.PLLR = 2;
HAL_RCC_OscConfig(&RCC_OscInitStruct);

RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1
                            |RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLRCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5);

HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);

HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);

/* SysTick_IRQn interrupt configuration */
HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
    
pregunta StijnB

2 respuestas

1

debe probar el ejemplo de RCC en el paquete de firmware para su stm32f4 mcu. E implementa la comprobación de errores:

if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
  /* Initialization Error */
  Error_Handler();
}


\and:

if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK)
{
  /* Initialization Error */
  Error_Handler();
}

if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
  /* Initialization Error */
  Error_Handler();
}

después de implementar esto, puede ejecutar en modo de depuración e insertar puntos de interrupción en Error_Handler ();

    
respondido por el burkut
0

Usted utiliza el oscilador interno HSI, verifique MXCube y seleccione el oscilador externo HSE si este es un problema que está solicitando.

    
respondido por el Marko Buršič

Lea otras preguntas en las etiquetas