Identify the Error Scope
- Ensure your include paths are set up correctly. The error ‘RCC\_PLLConfig’ was not declared in this scope usually indicates a missing or inaccessible declaration, commonly in header files.
- Verify that you have included all necessary headers. A typical header file for STM32 series would be
#include "stm32f10x\_rcc.h"
or something corresponding to your specific MCU series.
- Check the project settings to confirm that MCU-specific library paths are correct and the right microcontroller family is chosen.
Review Your Environment
- Ensure you are using a compatible IDE or build system like STM32CubeIDE, Keil, or Eclipse with ARM toolchain support. Misconfigured toolchains often lead to such errors.
- If using STM32CubeMX, regenerate the initialization code to ensure all peripheral setup and configuration files are included.
- Ensure you have the latest CMSIS version compatible with your MCU, as newer releases can deprecate or rename functions.
Check Function Existence
- Open the relevant header/source files (like stm32f10x_rcc.c/.h) to locate ‘RCC_PLLConfig’. It might be deprecated or renamed in newer HAL/LL libraries.
- If the function is not found, consult the STM32 MCU family reference manual or the ST Microelectronics webpage for alternative or updated functions.
- Review the latest STM32Cube MCU Package for your device to understand differences in peripheral setup between SPL (Standard Peripheral Library) and HAL/LL.
Adopt Alternative Approaches
- If ‘RCC_PLLConfig’ is deprecated, use the HAL library counterparts. A typical PLL configuration setup might replace direct register programming with function calls like
HAL_RCC_OscConfig()
and HAL_RCC\_ClockConfig()
.
- For instance, the pllConfig structure is used in HAL for configuring RCC rather than direct function calls. An example setup might look like this:
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
// Handle Error
}
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
{
// Handle Error
}
Refactor and Simplify Code
- Evaluate any macro definitions or shortcut configurations to ensure they are referenced correctly. Sometimes, macros might obscure the actual function calls or cause misconfiguration.
- Simplify the initialization process by compartmentalizing the code into distinct configuration blocks for ease of debugging and clarity.