STM32CubeIDE 2.x Handover Must Separate Building from CubeMX Generation
A receiver installs STM32CubeIDE 2.x, imports a delivered project, and cannot follow an old instruction to edit the pin configuration inside the IDE. Recreating the project or regenerating it with an arbitrary tool version can turn a setup problem into a source change. First separate the existing firmware build from the configuration-generation workflow that produced its sources.
This article addresses the Eclipse-based STM32CubeIDE transition documented in RN0114 Rev 39, June 2026. It does not describe the separate STM32CubeIDE for VS Code product or substitute STM32CubeMX2 procedures for a classic .ioc project. No installation, migration, or build was performed for this guide.
Recognize the tool boundary before repairing the project
RN0114 section 3.3.1 records that STM32CubeIDE 2.0.0 detached STM32CubeMX integration. ST’s 2.0 transition announcement explains the move to standalone tools and independent updates. An older tutorial’s embedded configuration editor is therefore not a reliable description of the 2.x workflow.
Do not infer project damage from that interface difference. Determine whether the delivery contains generated sources and build metadata, a saved generator configuration, or both. These are different inputs with different owners. An existing generated project may be ready for build reproduction even while the receiver’s configuration-editing tool is not yet prepared.
Ask one precise handover question: is the receiver expected only to build the accepted source tree, or also to change peripheral configuration and regenerate it? Answering it prevents an unnecessary generator upgrade from becoming an implicit prerequisite for the first compile.
Establish the build-only baseline first
Use the delivered project in a separate checkout or recoverable copy. Import the existing project metadata rather than creating a similarly named empty project and moving files until the IDE displays them. Record the installed IDE and compiler identities, select the intended configuration, and build without an intentional code-generation step.
If compilation fails, preserve the original source state and classify the first error. Missing compiler components, unresolved library paths, or an incorrect project root need different repairs from invalid generated C. Regenerating immediately can replace the evidence needed to distinguish those causes.
Compare any changes made by the import or build with the delivered revision. Some workspace state is local, while project metadata changes may need review. Do not describe every modification as harmless merely because it was made by a tool. The initial milestone is a documented build of the accepted tree, not a newly generated approximation of it.

Original two-path handover diagram. Each path needs its own inputs and acceptance evidence.
Identify the generator independently
For configuration editing, record the exact standalone CubeMX version used by the project, the selected device, firmware package identities, custom templates, and any generation scripts. Do not use the IDE’s version number as a substitute for the generator’s identity. Also distinguish the firmware package version from the CubeMX application version.
Keep the saved .ioc associated with the generated output it describes. If several configurations exist, identify which one produced the delivered variant and which output directory it owns. A convenient file association can open a configuration successfully while selecting a different installed generator than the one the project expects.
Before opening an important project in a newer generator, preserve the baseline and review the tool’s applicable version guidance. If the generator proposes migration, treat that as a separate decision. The availability of an IDE update does not, by itself, approve changes to device configuration, middleware, or generated initialization.
Use a no-intent-change generation trial
Once the intended generator inputs are available, make a trial generation in a disposable copy without deliberately changing the hardware configuration. Compare the complete tree with the delivered baseline. Include added and removed files, project metadata, startup code, linker inputs, and application-owned paths in the review.
Do not require an unexplained clean diff as a universal promise. Instead, explain each difference and decide whether it is expected for the pinned generator/input combination. A changed timestamp may be benign; changed initialization or library content needs a different review. A build that succeeds afterward does not establish equivalence of all generated behavior.
If the trial reveals that the delivered sources were manually patched after generation, preserve those changes and identify their intended owner. Move necessary repairs into a maintainable source or generation process before claiming that future regeneration is safe. Never discard them merely to make the generated directory look consistent.
Deliver two clear instructions instead of one ambiguous shortcut
The final handover should contain a build-only path with the accepted source revision, IDE/compiler setup, project entry point, and build configuration. Its generation path should identify the saved configuration, standalone generator, required packages, output destination, and review steps for changes.
Record which path the receiver actually completed. Successful build reproduction does not imply successful regeneration, and successful generation does not imply board qualification. Keeping these milestones distinct lets a team adopt the 2.x tool arrangement without silently changing the firmware while trying to repair an outdated setup instruction.