{"id":4217,"date":"2020-11-11T20:00:31","date_gmt":"2020-11-11T19:00:31","guid":{"rendered":"https:\/\/msalamon.pl\/?p=4217"},"modified":"2025-12-27T16:09:03","modified_gmt":"2025-12-27T15:09:03","slug":"you-can-have-a-heart-attack-copying-projects-in-stm32cubeide","status":"publish","type":"post","link":"https:\/\/msalamon.pl\/en\/you-can-have-a-heart-attack-copying-projects-in-stm32cubeide\/","title":{"rendered":"You can have a heart attack copying projects in STM32CubeIDE!"},"content":{"rendered":"\n<p>Many beginners, when they want to introduce some test changes in their project, don\u2019t always use Git. Sometimes there\u2019s also a real need to clone a project in order to develop it completely separately. First thought? Copy-Paste. It\u2019s not a bad solution, but when using CubeIDE we\u2019ll discover that there\u2019s quite a big problem with it.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h1 class=\"wp-block-heading\">Update<\/h1>\n\n\n\n<p>Since STM32CubeIDE version 1.7.0, the problem stopped occurring. I\u2019m leaving the article anyway, because it might come back somewhere someday \ud83d\ude42<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">My story with the \u201cproblem\u201d<\/h1>\n\n\n\n<p>I\u2019m currently working on my biggest project, which is the <a href=\"http:\/\/kursstm32.pl\/\" target=\"_blank\" rel=\"noopener\"><strong>STM32 Course for Beginners<\/strong><\/a> (the course content is in Polish). For its needs I\u2019m forced to split appropriate pieces of code into separate projects. All so that the lessons are relatively separated from each other and the code from the project fits them.<\/p>\n\n\n\n<p>For example, while writing UART using Polling, I declared some variables, etc. In general, there is something in this project. Now I\u2019d like to use this base for subsequent lessons, for example one about reception with interrupts.<\/p>\n\n\n\n<p>However, I don\u2019t want to touch this base, because I will share it as code for the earlier lesson. Idea \u2013 a copy of the project. Right mouse button -&gt; Copy -&gt; Paste next to it.<\/p>\n\n\n\n<p>You change the folder name. You change the name of the *.ioc file for Cube. Besides, Cube itself will start yelling that the folder and *.ioc must be named identically to the project folder for it to work.<\/p>\n\n\n\n<p>Everything is beautiful, you write code in the new project and everyone is happy. The devil is happiest because when that moment comes when you want to upload the base project for the course participants, it turns out that <strong>THERE ARE NO SOURCE FILES IN THE Src FOLDER. ALL OF THEM!<\/strong><\/p>\n\n\n\n<p>\u201cShock, despair, disbelief. Some remnant of hope\u201d. This quote from a well-known politician comes to mind. For some, like me, even a few harsher words. The base project evaporated. There\u2019s nothing. What now? Unfortunately, if there was no copy in an external repository \u2013 everything is gone. You have to recreate it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Where is the problem?<\/h2>\n\n\n\n<p>I googled, I read, but I didn\u2019t find a correct answer. Some say it\u2019s about the project settings file in the IDE \u2013 <em>.project<\/em>. So the problem should occur in every Eclipse-based environment. However, I don\u2019t remember ever having such problems with AVRs\u2026 I copied, moved and modified AVR projects without anything disappearing.<\/p>\n\n\n\n<p>Unfortunately, the problem lies in CubeMX and its file operations. Specifically, in which paths within the project it refers to. Steps to reproduce the disappearing files:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>You create the Source Project.<\/li>\n\n\n\n<li>You generate files in it via CubeMX<\/li>\n\n\n\n<li>You go into the projects folder.<\/li>\n\n\n\n<li>You copy the Source Project<\/li>\n\n\n\n<li>You paste the copy<\/li>\n\n\n\n<li>You change the name of the Copy Project<\/li>\n\n\n\n<li>You change the name of the Copy Project\u2019s *.ioc<\/li>\n\n\n\n<li>You launch the Copy Project\u2019s *.ioc<\/li>\n\n\n\n<li>You make changes if you want<\/li>\n\n\n\n<li>You regenerate the Copy Project<\/li>\n\n\n\n<li><strong>Src files in the Source Project disappear<\/strong><\/li>\n<\/ol>\n\n\n\n<p>Why?<\/p>\n\n\n\n<p><strong>Each CubeMX project has a special <em>.mxproject<\/em> file in its directory. It contains information about which files CubeMX uses to generate the project.<\/strong><\/p>\n\n\n\n<p><strong>And the most important piece of information \u2013 which files were generated previously.<\/strong> This is intended to select all files that should be regenerated. <strong>From my observations it follows that the \u201cprevious\u201d files are deleted entirely.<\/strong><\/p>\n\n\n\n<p>Only fragments inside USER CODE tags are taken from them and copied into completely new files. Cube doesn\u2019t modify existing files. It deletes them wholesale and only \u043f\u0435\u0440\u0435\u043d\u043e\u0441i user code.<\/p>\n\n\n\n<p>After copying \u201cProjekt_Zrodlo\u201d to \u201cProjekt_Kopia\u201d I opened the <em>.mxproject<\/em> file. Inside it looks like this.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">[PreviousLibFiles]\nLibFiles=Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal_tim.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal_tim_ex.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal_uart.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal_rcc.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal_rcc_ex.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal_flash.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal_flash_ex.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal_flash_ramfunc.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal_gpio.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal_gpio_ex.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal_dma_ex.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal_dma.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal_pwr.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal_pwr_ex.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal_cortex.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/Legacy\/stm32_hal_legacy.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal_def.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal_exti.h;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_tim.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_tim_ex.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_uart.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_rcc.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_rcc_ex.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_flash.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_flash_ex.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_flash_ramfunc.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_gpio.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_dma_ex.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_dma.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_pwr.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_pwr_ex.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_cortex.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_exti.c;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal_tim.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal_tim_ex.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal_uart.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal_rcc.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal_rcc_ex.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal_flash.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal_flash_ex.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal_flash_ramfunc.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal_gpio.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal_gpio_ex.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal_dma_ex.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal_dma.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal_pwr.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal_pwr_ex.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal_cortex.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/Legacy\/stm32_hal_legacy.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal_def.h;Drivers\/STM32F4xx_HAL_Driver\/Inc\/stm32f4xx_hal_exti.h;Drivers\/CMSIS\/Device\/ST\/STM32F4xx\/Include\/stm32f411xe.h;Drivers\/CMSIS\/Device\/ST\/STM32F4xx\/Include\/stm32f4xx.h;Drivers\/CMSIS\/Device\/ST\/STM32F4xx\/Include\/system_stm32f4xx.h;Drivers\/CMSIS\/Device\/ST\/STM32F4xx\/Source\/Templates\/system_stm32f4xx.c;Drivers\/CMSIS\/Include\/cmsis_armcc.h;Drivers\/CMSIS\/Include\/cmsis_armclang.h;Drivers\/CMSIS\/Include\/cmsis_compiler.h;Drivers\/CMSIS\/Include\/cmsis_gcc.h;Drivers\/CMSIS\/Include\/cmsis_iccarm.h;Drivers\/CMSIS\/Include\/cmsis_version.h;Drivers\/CMSIS\/Include\/core_armv8mbl.h;Drivers\/CMSIS\/Include\/core_armv8mml.h;Drivers\/CMSIS\/Include\/core_cm0.h;Drivers\/CMSIS\/Include\/core_cm0plus.h;Drivers\/CMSIS\/Include\/core_cm1.h;Drivers\/CMSIS\/Include\/core_cm23.h;Drivers\/CMSIS\/Include\/core_cm3.h;Drivers\/CMSIS\/Include\/core_cm33.h;Drivers\/CMSIS\/Include\/core_cm4.h;Drivers\/CMSIS\/Include\/core_cm7.h;Drivers\/CMSIS\/Include\/core_sc000.h;Drivers\/CMSIS\/Include\/core_sc300.h;Drivers\/CMSIS\/Include\/mpu_armv7.h;Drivers\/CMSIS\/Include\/mpu_armv8.h;Drivers\/CMSIS\/Include\/tz_context.h;\n\n[PreviousUsedCubeIDEFiles]\nSourceFiles=Core\\Src\\main.c;Core\\Src\\stm32f4xx_it.c;Core\\Src\\stm32f4xx_hal_msp.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_tim.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_tim_ex.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_uart.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_rcc.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_rcc_ex.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_flash.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_flash_ex.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_flash_ramfunc.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_gpio.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_dma_ex.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_dma.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_pwr.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_pwr_ex.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_cortex.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_exti.c;Core\\Src\/system_stm32f4xx.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_tim.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_tim_ex.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_uart.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_rcc.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_rcc_ex.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_flash.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_flash_ex.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_flash_ramfunc.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_gpio.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_dma_ex.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_dma.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_pwr.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_pwr_ex.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_cortex.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal.c;Drivers\/STM32F4xx_HAL_Driver\/Src\/stm32f4xx_hal_exti.c;Core\\Src\/system_stm32f4xx.c;Drivers\/CMSIS\/Device\/ST\/STM32F4xx\/Source\/Templates\/system_stm32f4xx.c;;\nHeaderPath=Drivers\\STM32F4xx_HAL_Driver\\Inc;Drivers\\STM32F4xx_HAL_Driver\\Inc\\Legacy;Drivers\\CMSIS\\Device\\ST\\STM32F4xx\\Include;Drivers\\CMSIS\\Include;Core\\Inc;\nCDefines=USE_HAL_DRIVER;STM32F411xE;USE_HAL_DRIVER;USE_HAL_DRIVER;\n\n[PreviousGenFiles]\nAdvancedFolderStructure=true\nHeaderFileListSize=3\nHeaderFiles#0=D:\/LIVE\/Workspace\/Projekt_Zrodlo\/Core\/Inc\/stm32f4xx_it.h\nHeaderFiles#1=D:\/LIVE\/Workspace\/Projekt_Zrodlo\/Core\/Inc\/stm32f4xx_hal_conf.h\nHeaderFiles#2=D:\/LIVE\/Workspace\/Projekt_Zrodlo\/Core\/Inc\/main.h\nHeaderFolderListSize=1\nHeaderPath#0=D:\/LIVE\/Workspace\/Projekt_Zrodlo\/Core\/Inc\nHeaderFiles=;\nSourceFileListSize=3\nSourceFiles#0=D:\/LIVE\/Workspace\/Projekt_Zrodlo\/Core\/Src\/stm32f4xx_it.c\nSourceFiles#1=D:\/LIVE\/Workspace\/Projekt_Zrodlo\/Core\/Src\/stm32f4xx_hal_msp.c\nSourceFiles#2=D:\/LIVE\/Workspace\/Projekt_Zrodlo\/Core\/Src\/main.c\nSourceFolderListSize=1\nSourcePath#0=D:\/LIVE\/Workspace\/Projekt_Zrodlo\/Core\/Src\nSourceFiles=;<\/pre>\n\n\n\n<p><strong>Pay attention to the [PreviousGenFiles] section<\/strong>. There are paths to the source project. And they are <strong>ABSOLUTE paths<\/strong>. <strong>These files are deleted when the project is regenerated.<\/strong> If so, then you can replace the path\u2014or basically just the project name\u2014with the new one, right?<\/p>\n\n\n\n<p>After replacing it, the [PreviousGenFiles] section looks like this.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">[PreviousGenFiles]\nAdvancedFolderStructure=true\nHeaderFileListSize=3\nHeaderFiles#0=D:\/LIVE\/Workspace\/Projekt_Kopia\/Core\/Inc\/stm32f4xx_it.h\nHeaderFiles#1=D:\/LIVE\/Workspace\/Projekt_Kopia\/Core\/Inc\/stm32f4xx_hal_conf.h\nHeaderFiles#2=D:\/LIVE\/Workspace\/Projekt_Kopia\/Core\/Inc\/main.h\nHeaderFolderListSize=1\nHeaderPath#0=D:\/LIVE\/Workspace\/Projekt_Kopia\/Core\/Inc\nHeaderFiles=;\nSourceFileListSize=3\nSourceFiles#0=D:\/LIVE\/Workspace\/Projekt_Kopia\/Core\/Src\/stm32f4xx_it.c\nSourceFiles#1=D:\/LIVE\/Workspace\/Projekt_Kopia\/Core\/Src\/stm32f4xx_hal_msp.c\nSourceFiles#2=D:\/LIVE\/Workspace\/Projekt_Kopia\/Core\/Src\/main.c\nSourceFolderListSize=1\nSourcePath#0=D:\/LIVE\/Workspace\/Projekt_Kopia\/Core\/Src\nSourceFiles=;<\/pre>\n\n\n\n<p class=\"has-text-align-center\"><span style=\"font-size: 18pt;\"><strong>Trying to regenerate the copy project no longer destroys the source project!<\/strong><\/span><\/p>\n\n\n\n<p class=\"has-text-align-center\"><span style=\"font-size: 24pt;\"><strong>Success!<\/strong><\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Any FIX for this, Mr. ST?<\/h2>\n\n\n\n<p>The fix would be trivially simple. <strong>It would be enough to replace absolute paths with relative paths in the <em>.mxproject<\/em> file<\/strong>. However, ST itself would have to do this in its tool.<\/p>\n\n\n\n<p>What\u2019s interesting is that in the earlier sections of the .mxproject file there are relative paths. I\u2019m curious what guided ST when doing something like this\u2026<\/p>\n\n\n\n<p>Because it\u2019s quite easy to discover such a surprise within the same Workspace. Worse if we move the project completely somewhere else. Then there\u2019s an armed bomb lurking, just waiting to delete files under the absolute path \ud83d\ude42<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Summary<\/h2>\n\n\n\n<p>The problem exists and it\u2019s quite serious. It cost me a few extra hours of work on the course. The course is half the problem. Worse if some big commercial projects were deleted.<\/p>\n\n\n\n<p>One thing is certain \u2013 backups, backups, backups. You need to make backups outside of your computer. Git with a cloud repository will be suitable for that. Then it\u2019s easy to simply roll back such a surprise.<\/p>\n\n\n\n<p><strong>It would be nice if ST fixed this problem.<\/strong> Who knows, maybe my post will reach them. I\u2019d be happy \ud83d\ude42<\/p>\n\n\n\n<p>For now, remember what you need to do to stay safe project-wise.<\/p>\n\n\n\n<p><strong>If you liked the article, buy something from me!<span>&nbsp;<\/span><img decoding=\"async\" draggable=\"false\" role=\"img\" class=\"emoji\" alt=\"?\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/13.0.0\/svg\/1f642.svg\"><span>&nbsp;<\/span><a href=\"https:\/\/sklep.msalamon.pl\/?utm_sorce=blog&amp;utm_medium=article&amp;utm_campaign=cubeide_kopiowanie&amp;utm_content=Text\">https:\/\/sklep.msalamon.pl\/<\/a><\/strong><\/p>\n\n\n\n<p><span>If you noticed any mistake, disagree with something, would like to add something important, or simply feel like you\u2019d like to discuss this topic, write a comment. Remember that the discussion should be polite and in accordance with the rules of the Polish language.<\/span><\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-left kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;4217&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;0&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;0&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;0&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;0\\\/5 - (0 votes)&quot;,&quot;size&quot;:&quot;24&quot;,&quot;title&quot;:&quot;You can have a heart attack copying projects in STM32CubeIDE!&quot;,&quot;width&quot;:&quot;0&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 0px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 19.2px;\">\n            <span class=\"kksr-muted\"><\/span>\n    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Many beginners, when they want to introduce some test changes in their project, don\u2019t always use Git. Sometimes there\u2019s also a real need to clone a project in order to develop it completely separately. First thought? Copy-Paste. It\u2019s not a bad solution, but when using CubeIDE we\u2019ll discover that there\u2019s [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3542,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"categories":[160],"tags":[175,178,176,174,177],"class_list":["post-4217","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-stm32","tag-electronics","tag-kursstm32","tag-programming","tag-stm32","tag-stm32cubemx"],"_links":{"self":[{"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/posts\/4217","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/comments?post=4217"}],"version-history":[{"count":3,"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/posts\/4217\/revisions"}],"predecessor-version":[{"id":4220,"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/posts\/4217\/revisions\/4220"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/media\/3542"}],"wp:attachment":[{"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/media?parent=4217"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/categories?post=4217"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/tags?post=4217"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}