|

|  How to Fix Error: 'RCC_PLLConfig' was not declared in this scope

How to Fix Error: 'RCC_PLLConfig' was not declared in this scope

October 14, 2024

Resolve 'RCC_PLLConfig' scope error with step-by-step guidance. Enhance your C++ firmware skills with this concise debugging guide.

How to Fix Error: 'RCC_PLLConfig' was not declared in this scope

 

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.

 

Pre-order Friend AI Necklace

Limited Beta: Claim Your Dev Kit and Start Building Today

Instant transcription

Access hundreds of community apps

Sync seamlessly on iOS & Android

Order Now

Turn Ideas Into Apps & Earn Big

Build apps for the AI wearable revolution, tap into a $100K+ bounty pool, and get noticed by top companies. Whether for fun or productivity, create unique use cases, integrate with real-time transcription, and join a thriving dev community.

Get Developer Kit Now