{"id":989,"date":"2026-05-03T15:24:18","date_gmt":"2026-05-03T22:24:18","guid":{"rendered":"https:\/\/sysprogs.com\/tutorials\/?p=989"},"modified":"2026-08-28T09:37:55","modified_gmt":"2026-08-28T16:37:55","slug":"creating-embedded-projects-on-windows","status":"publish","type":"post","link":"https:\/\/sysprogs.com\/CodeVROOM\/tutorials\/stm32\/windows\/","title":{"rendered":"Creating Embedded Projects on Windows"},"content":{"rendered":"<p>This tutorial shows how to create a basic STM32 project using CodeVROOM on Windows. For other platforms, see the <a href=\"https:\/\/sysprogs.com\/CodeVROOM\/tutorials\/stm32\/linux\/\">Linux<\/a> and <a href=\"https:\/\/sysprogs.com\/CodeVROOM\/tutorials\/stm32\/macos\/\">MacOS<\/a> tutorials.<\/p>\n<ol>\n<li>Download the <a href=\"https:\/\/sysprogs.com\/CodeVROOM\/download\/\">latest CodeVROOM executable<\/a> and run it:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/01-splash.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1065\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/01-splash.png\" alt=\"\" width=\"786\" height=\"393\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/01-splash.png 786w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/01-splash-300x150.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/01-splash-768x384.png 768w\" sizes=\"(max-width: 786px) 100vw, 786px\" \/><\/a><\/li>\n<li>You can run it in place or install to either %LOCALAPPDATA% or Program Files. Installation only takes a few seconds and can be easily undone via the Add\/Remove Programs window. Once CodeVROOM is started or installed, its main window will look like this:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/02-window-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1066\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/02-window-1.png\" alt=\"\" width=\"1312\" height=\"725\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/02-window-1.png 1312w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/02-window-1-300x166.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/02-window-1-1024x566.png 1024w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/02-window-1-768x424.png 768w\" sizes=\"(max-width: 1312px) 100vw, 1312px\" \/><\/a><\/li>\n<li>Use the <strong>File-&gt;New-&gt;Project<\/strong> command or the toolbar button to create a new project:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/03-newprj.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1067\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/03-newprj.png\" alt=\"\" width=\"1312\" height=\"725\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/03-newprj.png 1312w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/03-newprj-300x166.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/03-newprj-1024x566.png 1024w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/03-newprj-768x424.png 768w\" sizes=\"(max-width: 1312px) 100vw, 1312px\" \/><\/a><\/li>\n<li>Select the Embedded project wizard:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/04-emb-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1068\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/04-emb-1.png\" alt=\"\" width=\"812\" height=\"416\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/04-emb-1.png 812w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/04-emb-1-300x154.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/04-emb-1-768x393.png 768w\" sizes=\"(max-width: 812px) 100vw, 812px\" \/><\/a><\/li>\n<li>The Embedded Project Wizard is a simplified version of the VisualGDB&#8217;s project wizard and offers similar choices. Proceed with creating a default application:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/05-type.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1069\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/05-type.png\" alt=\"\" width=\"900\" height=\"700\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/05-type.png 900w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/05-type-300x233.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/05-type-768x597.png 768w\" sizes=\"(max-width: 900px) 100vw, 900px\" \/><\/a><\/li>\n<li>If you have tried VisualGDB on that machine, CodeVROOM will automatically pick up the toolchains and BSPs from it. If not, locate the ARM toolchain installer in the list and select it:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/06-arm.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1070\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/06-arm.png\" alt=\"\" width=\"900\" height=\"700\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/06-arm.png 900w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/06-arm-300x233.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/06-arm-768x597.png 768w\" sizes=\"(max-width: 900px) 100vw, 900px\" \/><\/a><\/li>\n<li>Select the installation folder and press &#8220;Install&#8221;:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/toolchaininst.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1071\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/toolchaininst.png\" alt=\"\" width=\"600\" height=\"171\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/toolchaininst.png 600w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/toolchaininst-300x86.png 300w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/a><\/li>\n<li>Once the toolchain is installed, VisualGDB will display the devices compatible with that toolchain. Select the STM32F407VG (used in STM32F4-Discovery) and click &#8220;Install&#8221;:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/07-get.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1072\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/07-get.png\" alt=\"\" width=\"900\" height=\"700\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/07-get.png 900w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/07-get-300x233.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/07-get-768x597.png 768w\" sizes=\"(max-width: 900px) 100vw, 900px\" \/><\/a><\/li>\n<li>Once the device support is installed, CodeVROOM will show the device configuration options equivalent to the ones from VisualGDB. Proceed with the default settings:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/08-dev.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1073\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/08-dev.png\" alt=\"\" width=\"900\" height=\"700\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/08-dev.png 900w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/08-dev-300x233.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/08-dev-768x597.png 768w\" sizes=\"(max-width: 900px) 100vw, 900px\" \/><\/a><\/li>\n<li>The next page allows selecting between basic samples and the samples from the device vendor (ST). In this tutorial we will demonstrate some advanced debugging tricks, so select the LEDBlink (FreeRTOS) tutorial:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/09-blink.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1074\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/09-blink.png\" alt=\"\" width=\"900\" height=\"700\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/09-blink.png 900w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/09-blink-300x233.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/09-blink-768x597.png 768w\" sizes=\"(max-width: 900px) 100vw, 900px\" \/><\/a><\/li>\n<li>The last page allows selecting the debug method. On Windows CodeVROOM can automatically detect common USB-based debuggers, so plug in your ST-Link and select it in the list:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/10-debug.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1075\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/10-debug.png\" alt=\"\" width=\"900\" height=\"700\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/10-debug.png 900w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/10-debug-300x233.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/10-debug-768x597.png 768w\" sizes=\"(max-width: 900px) 100vw, 900px\" \/><\/a><\/li>\n<li>Press &#8220;Finish&#8221; to create the project. Before we start debugging it, add a <strong>g_ThreadStats<\/strong> struct above the threads and modify both threads to increment one field in the struct:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/11-count.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1076\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/11-count.png\" alt=\"\" width=\"1312\" height=\"725\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/11-count.png 1312w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/11-count-300x166.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/11-count-1024x566.png 1024w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/11-count-768x424.png 768w\" sizes=\"(max-width: 1312px) 100vw, 1312px\" \/><\/a><\/li>\n<li>Once the project is loaded, use the <strong>Project-&gt;Build<\/strong> command to build it:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/12-built.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1077\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/12-built.png\" alt=\"\" width=\"1312\" height=\"725\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/12-built.png 1312w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/12-built-300x166.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/12-built-1024x566.png 1024w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/12-built-768x424.png 768w\" sizes=\"(max-width: 1312px) 100vw, 1312px\" \/><\/a><\/li>\n<li>Set a breakpoint on the line calling <strong>HAL_GPIO_Init()<\/strong>, and start debugging. Once the breakpoint hits, you can hover the mouse over various variables to see their values. Use the context menu to quickly access other tool windows, or customize the view. E.g. you can configure the primary view to be Decimal+Hex, and the secondary view to be Binary. <a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/15-menu.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1104\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/15-menu.png\" alt=\"\" width=\"1440\" height=\"753\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/15-menu.png 1440w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/15-menu-300x157.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/15-menu-1024x535.png 1024w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/15-menu-768x402.png 768w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/15-menu-390x205.png 390w\" sizes=\"(max-width: 1440px) 100vw, 1440px\" \/><\/a><\/li>\n<li>The Stack Frames windows is also highly configurable. You can easily unwind the stack all the way to the entry point, or limit the number of loaded frames, or view the size of each stack frame, if you are trying to analyze the memory use:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/14-prefs.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1105\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/14-prefs.png\" alt=\"\" width=\"1440\" height=\"753\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/14-prefs.png 1440w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/14-prefs-300x157.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/14-prefs-1024x535.png 1024w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/14-prefs-768x402.png 768w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/14-prefs-390x205.png 390w\" sizes=\"(max-width: 1440px) 100vw, 1440px\" \/><\/a><\/li>\n<li>Resume the session and hover the mouse over <strong>g_ThreadStats<\/strong>. CodeVROOM will display the live values as if the program was stopped:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/16-live.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1106\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/16-live.png\" alt=\"\" width=\"1440\" height=\"753\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/16-live.png 1440w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/16-live-300x157.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/16-live-1024x535.png 1024w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/16-live-768x402.png 768w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/16-live-390x205.png 390w\" sizes=\"(max-width: 1440px) 100vw, 1440px\" \/><\/a>Note that it only works with global variables that can be located in memory without stopping the target. If you want to live-watch more complex expressions, you can use the dedicated Live Watch window.<\/li>\n<li>You can also use the Globals view to find the variables there, or use the RTOS Objects view to see live information about running threads, mutexes, etc:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/18-rtos-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1107\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/18-rtos-1.png\" alt=\"\" width=\"1440\" height=\"753\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/18-rtos-1.png 1440w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/18-rtos-1-300x157.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/18-rtos-1-1024x535.png 1024w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/18-rtos-1-768x402.png 768w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/18-rtos-1-390x205.png 390w\" sizes=\"(max-width: 1440px) 100vw, 1440px\" \/><\/a><\/li>\n<li>Stop the target again and open the Threads window. Note how you can instantly filter frames of all stacks by function names, and see the locations of all other threads\/frames highlighted in the code:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/19-threads.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1108\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/19-threads.png\" alt=\"\" width=\"1440\" height=\"753\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/19-threads.png 1440w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/19-threads-300x157.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/19-threads-1024x535.png 1024w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/19-threads-768x402.png 768w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/19-threads-390x205.png 390w\" sizes=\"(max-width: 1440px) 100vw, 1440px\" \/><\/a>Clicking on the &#8220;LED1, frame #3&#8221; label will switch to that frame, so you can inspect the local variables.<\/li>\n<li>Open the Peripheral Registers view. Type &#8220;IDR&#8221; in the filter, so all matches get immediately highlighted and expanded. Then set the live flag on GPIOD-&gt;IDR:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/20-registers.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1109\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/20-registers.png\" alt=\"\" width=\"1440\" height=\"753\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/20-registers.png 1440w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/20-registers-300x157.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/20-registers-1024x535.png 1024w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/20-registers-768x402.png 768w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/20-registers-390x205.png 390w\" sizes=\"(max-width: 1440px) 100vw, 1440px\" \/><\/a><\/li>\n<li>Now you can resume the program and see how IDR (bitmask of pin states) changes in real time:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/21-change.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1110\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/21-change.png\" alt=\"\" width=\"1440\" height=\"753\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/21-change.png 1440w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/21-change-300x157.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/21-change-1024x535.png 1024w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/21-change-768x402.png 768w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/21-change-390x205.png 390w\" sizes=\"(max-width: 1440px) 100vw, 1440px\" \/><\/a><\/li>\n<li>You can edit various project properties using the &#8220;Properties&#8221; command in the Files view. The property pages are directly ported from VisualGDB, so if you have used it before, you will find them very familiar:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/22-settings.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1111\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/22-settings.png\" alt=\"\" width=\"1440\" height=\"753\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/22-settings.png 1440w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/22-settings-300x157.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/22-settings-1024x535.png 1024w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/22-settings-768x402.png 768w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/22-settings-390x205.png 390w\" sizes=\"(max-width: 1440px) 100vw, 1440px\" \/><\/a><\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>This tutorial shows how to create a basic STM32 project using CodeVROOM on Windows. For other platforms, see the Linux<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[64],"tags":[74,75],"_links":{"self":[{"href":"https:\/\/sysprogs.com\/tutorials\/wp-json\/wp\/v2\/posts\/989"}],"collection":[{"href":"https:\/\/sysprogs.com\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sysprogs.com\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sysprogs.com\/tutorials\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sysprogs.com\/tutorials\/wp-json\/wp\/v2\/comments?post=989"}],"version-history":[{"count":5,"href":"https:\/\/sysprogs.com\/tutorials\/wp-json\/wp\/v2\/posts\/989\/revisions"}],"predecessor-version":[{"id":1112,"href":"https:\/\/sysprogs.com\/tutorials\/wp-json\/wp\/v2\/posts\/989\/revisions\/1112"}],"wp:attachment":[{"href":"https:\/\/sysprogs.com\/tutorials\/wp-json\/wp\/v2\/media?parent=989"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sysprogs.com\/tutorials\/wp-json\/wp\/v2\/categories?post=989"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sysprogs.com\/tutorials\/wp-json\/wp\/v2\/tags?post=989"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}