{"id":4221,"date":"2020-10-28T20:00:29","date_gmt":"2020-10-28T19:00:29","guid":{"rendered":"https:\/\/msalamon.pl\/?p=4221"},"modified":"2025-12-27T16:11:37","modified_gmt":"2025-12-27T15:11:37","slug":"running-code-on-two-cores-of-the-stm32h745","status":"publish","type":"post","link":"https:\/\/msalamon.pl\/en\/running-code-on-two-cores-of-the-stm32h745\/","title":{"rendered":"Running code on two cores of the STM32H745"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">In the <a href=\"http:\/\/msalamon.pl\/czy-lepiej-miec-dwa-jadra-niz-jedno-stm32h7-konfiguracja-projektu\/\">previous post<\/a> in the dual-core series, I showed you a really strong contender, namely the <a href=\"https:\/\/sklep.msalamon.pl\/produkt\/nucleo-h745zi-q\/?utm_source=blog&amp;utm_medium=article&amp;utm_campaign=stm32_2core2&amp;utm_content=Text\">STM32H745<\/a>, which is on the <a href=\"https:\/\/sklep.msalamon.pl\/produkt\/nucleo-h745zi-q\/?utm_source=blog&amp;utm_medium=article&amp;utm_campaign=stm32_2core2&amp;utm_content=Text\">Nucleo<\/a> 144-size board. I got to the point where I created the first project. We already have the project structure behind us. So how do we run our code now?<\/p>\n\n\n\n<!--more-->\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a href=\"https:\/\/sklep.msalamon.pl\/produkt\/nucleo-h745zi-q\/?utm_source=blog&amp;utm_medium=banner&amp;utm_campaign=stm32_2core2\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"400\" src=\"http:\/\/msalamon.pl\/wp-content\/uploads\/2020\/09\/2-core-Nucleo-144-baner.jpg\" alt=\"\" class=\"wp-image-1691\" srcset=\"https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/09\/2-core-Nucleo-144-baner.jpg 1200w, https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/09\/2-core-Nucleo-144-baner-300x100.jpg 300w, https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/09\/2-core-Nucleo-144-baner-1024x341.jpg 1024w, https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/09\/2-core-Nucleo-144-baner-768x256.jpg 768w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">The \u201cmain\u201d core \u2013 MCU start<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Who rules in the <a href=\"https:\/\/sklep.msalamon.pl\/produkt\/nucleo-h745zi-q\/?utm_source=blog&amp;utm_medium=article&amp;utm_campaign=stm32_2core2&amp;utm_content=Text\">STM32H745<\/a> package? It seems like the stronger one, i.e., Cortex-M7. You might think that Cortex-M7 in such a case will initialize the whole microcontroller. And that is exactly the default behavior.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cube generates the project in Boot Mode Sequence 1. What is this sequence about? I summarized the whole thing in a table.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>Cortex-M4<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>Cortex-M7<\/strong><\/td><\/tr><tr><td>Start<\/td><td>Start<\/td><\/tr><tr><td>Enables semaphores and activates notifications on HSEM_ID_0<\/td><td>Waits until Cortex-M4 enters STOP Mode<\/td><\/tr><tr><td>Clears Events and enters STOP Mode<\/td><td><\/td><\/tr><tr><td><\/td><td>Initializes HAL<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><\/td><td>Configures clocks (shared for both cores)<\/td><\/tr><tr><td><\/td><td>Takes semaphore HSEM_ID_0<\/td><\/tr><tr><td><\/td><td>Releases semaphore HSEM_ID_0 (sending a notification to Cortex-M4 to wake it up)<\/td><\/tr><tr><td><\/td><td>Waits for Cortex-M4 to wake up<\/td><\/tr><tr><td>Wakes up after the semaphore notification<\/td><td><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>Initializes HAL<\/td><td>Initializes its peripherals<\/td><\/tr><tr><td>Initializes its peripherals<\/td><td>Runs<\/td><\/tr><tr><td>Runs<\/td><td><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">After this startup sequence, both cores are already working. Each according to its own program, because after all we write two separate programs, if you remember from the <a href=\"http:\/\/msalamon.pl\/czy-lepiej-miec-dwa-jadra-niz-jedno-stm32h7-konfiguracja-projektu\/\">previous post<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">A simple LED blinking program<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">What\u2019s the first thing you can do on a microcontroller that\u2019s new to you? Of course\u2014blink an LED! On the <a href=\"https:\/\/sklep.msalamon.pl\/produkt\/nucleo-h745zi-q\/?utm_source=blog&amp;utm_medium=article&amp;utm_campaign=stm32_2core2&amp;utm_content=Text\">NUCLEO-H745ZI-Q<\/a> we have as many as three LEDs compared to the <a href=\"https:\/\/sklep.msalamon.pl\/kategoria-produktu\/dev-boardy\/stm32-nucleo\/?utm_source=blog&amp;utm_medium=article&amp;utm_campaign=stm32_2core2&amp;utm_content=Text\">smaller Nucleo<\/a>. Green, yellow, and red.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a href=\"http:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_nucleo_leds.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"376\" src=\"http:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_nucleo_leds-1024x376.png\" alt=\"\" class=\"wp-image-1709\" srcset=\"https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_nucleo_leds-1024x376.png 1024w, https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_nucleo_leds-300x110.png 300w, https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_nucleo_leds-768x282.png 768w, https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_nucleo_leds.png 1476w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">On one core we\u2019ll blink the green one, on the other the red one. We\u2019ll do both blinks using HAL_Delay, so we\u2019ll finally be able to run \u201ctwo things at once\u201d \ud83d\ude09<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The code is trivially simple. In main.c for Cortex-M4, in the main loop you just blink the LED.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">  \/* Infinite loop *\/\n  \/* USER CODE BEGIN WHILE *\/\n  while (1)\n  {\n\t  HAL_GPIO_TogglePin(LD1_GPIO_Port, LD1_Pin);\n\t  HAL_Delay(500);\n    \/* USER CODE END WHILE *\/\n\n    \/* USER CODE BEGIN 3 *\/\n  }\n  \/* USER CODE END 3 *\/<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">On the second core, Cortex-M7, we write in a different main.c, but the code will look almost the same. It differs in the LED number and the blink speed.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">  \/* Infinite loop *\/\n  \/* USER CODE BEGIN WHILE *\/\n  while (1)\n  {\n\t  HAL_GPIO_TogglePin(LD3_GPIO_Port, LD3_Pin);\n\t  HAL_Delay(300);\n    \/* USER CODE END WHILE *\/\n\n    \/* USER CODE BEGIN 3 *\/\n  }\n  \/* USER CODE END 3 *\/<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">That\u2019s it for the code. The real difficulties start only now\u2014now that we want to run it on the microcontroller as a debug session, to inspect the operation of the whole system.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Starting Debug on the STM32H745<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You can find the entire startup sequence in the appropriate <a href=\"http:\/\/msalamon.pl\/download\/1710\/\">ST document<\/a>. It contains information on how to get started with <a href=\"https:\/\/sklep.msalamon.pl\/produkt\/nucleo-h745zi-q\/?utm_source=blog&amp;utm_medium=article&amp;utm_campaign=stm32_2core2&amp;utm_content=Text\">dual-core<\/a> in STM32CubeIDE. Let me present you the most important part, namely how to start debugging.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In short:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We need a separate debug project for each core<\/li>\n\n\n\n<li>You have to set the configuration so that the cores halt each other<\/li>\n\n\n\n<li>Create a group of debug configurations to run them simultaneously.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">What does it look like in practice? Let me show you.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Let\u2019s start with Cortex-M7. Let\u2019s create a debug configuration for it.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a href=\"http:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"744\" height=\"1009\" src=\"http:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step1.png\" alt=\"\" class=\"wp-image-1713\" srcset=\"https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step1.png 744w, https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step1-221x300.png 221w\" sizes=\"auto, (max-width: 744px) 100vw, 744px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"><strong>Next, set \u201cConnect under reset\u201d and check Halt all cores. Pay attention to the port number for GDB.<\/strong><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a href=\"http:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"862\" src=\"http:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step2-1024x862.png\" alt=\"\" class=\"wp-image-1714\" srcset=\"https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step2-1024x862.png 1024w, https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step2-300x252.png 300w, https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step2-768x646.png 768w, https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step2.png 1103w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Create a debug project like that for Cortex-M4 as well. Here, do not set reset, but instead set a different GDB port number than for Cortex-M7. <strong>Otherwise it won\u2019t work!<\/strong><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a href=\"http:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step3.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"862\" src=\"http:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step3-1024x862.png\" alt=\"\" class=\"wp-image-1715\" srcset=\"https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step3-1024x862.png 1024w, https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step3-300x252.png 300w, https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step3-768x646.png 768w, https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step3.png 1103w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Since we\u2019re still in the Debugger tab, <strong>in both configurations you must check both options in the Cross Trigger Interface.<\/strong> This makes it possible for one core to halt the other and vice versa.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a href=\"http:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step3a.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"862\" src=\"http:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step3a-1024x862.png\" alt=\"\" class=\"wp-image-1720\" srcset=\"https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step3a-1024x862.png 1024w, https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step3a-300x252.png 300w, https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step3a-768x646.png 768w, https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step3a.png 1103w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">OK. Now go back to the Cortex-M7 configuration. In the Startup tab you now need to add the *.elf file from Cortex-M4. You do this via<em> Add\u2026<\/em><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a href=\"http:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step4.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"862\" src=\"http:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step4-1024x862.png\" alt=\"\" class=\"wp-image-1716\" srcset=\"https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step4-1024x862.png 1024w, https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step4-300x252.png 300w, https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step4-768x646.png 768w, https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step4.png 1103w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a href=\"http:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step5.png\"><img loading=\"lazy\" decoding=\"async\" width=\"270\" height=\"341\" src=\"http:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step5.png\" alt=\"\" class=\"wp-image-1717\" srcset=\"https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step5.png 270w, https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step5-238x300.png 238w\" sizes=\"auto, (max-width: 270px) 100vw, 270px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">And configure this ELF as below. You have to select which project you want to add to Startup. Notice that I checked the \u201cDownload\u201d checkbox. This means the Cortex-M7 configuration will also program the microcontroller with the code for Cortex-M4. <strong>This means the Cortex-M4 configuration can no longer do that. You have to uncheck the Download checkbox there.<\/strong><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a href=\"http:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step6.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"862\" src=\"http:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step6-1024x862.png\" alt=\"\" class=\"wp-image-1718\" srcset=\"https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step6-1024x862.png 1024w, https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step6-300x252.png 300w, https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step6-768x646.png 768w, https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step6.png 1103w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Now we need to run it. We have to create a so-called <strong>Launch group&nbsp;<\/strong>in debug, which will start two configurations at the same time.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a href=\"http:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step7.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"862\" src=\"http:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step7-1024x862.png\" alt=\"\" class=\"wp-image-1719\" srcset=\"https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step7-1024x862.png 1024w, https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step7-300x252.png 300w, https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step7-768x646.png 768w, https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/10\/stm32h7_debug_step7.png 1103w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">The configuration is ready. Now you just need to launch it! It\u2019s not that simple either \ud83d\ude42<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Running the program<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You can\u2019t just press Play in Debug and watch it run. You have two projects and you have to start them separately in both. Additionally, you need to do it in the right sequence so that the cores cooperate with each other!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Step by step:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Start the group project<\/li>\n\n\n\n<li>Start the Cortex-M4 project \u2013 it will end up at address 0xA05F0000, which means it entered STOP Mode and the debug has stopped.<\/li>\n\n\n\n<li>Start Cortex-M7.<\/li>\n\n\n\n<li>Resume Cortex-M4.<\/li>\n\n\n\n<li>Both cores are running.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">If you loaded a simple LED blink on each core, you will observe two LEDs blinking on the Nucleo \ud83d\ude42 Each of them is controlled by a different microcontroller core.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Summary<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">As you can see, there\u2019s some gymnastics involved in running a program on such a 2-core device. However, it can be done fairly easily if we stick to a few rules. Later you only need to remember in what order to start the programs on the microcontroller, and that\u2019s it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You\u2019re probably wondering how to communicate between the two cores, right? After all, they didn\u2019t put them into one package so they could run separately.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"http:\/\/msalamon.pl\/jak-zaczac-z-stm32\/?utm_source=blog&amp;utm_medium=article&amp;utm_campaign=stm32_2core2&amp;utm_content=Text\">STM32H745<\/a> has several possibilities when it comes to such cooperation of the two \u201ceggs\u201d. I will cover this in future posts.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><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=stm32_2core2&amp;utm_content=Text\">https:\/\/sklep.msalamon.pl\/<\/a><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span>If you noticed an error, 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\n<p class=\"wp-block-paragraph\"><\/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;4221&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;Running code on two cores of the STM32H745&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>In the previous post in the dual-core series, I showed you a really strong contender, namely the STM32H745, which is on the Nucleo 144-size board. I got to the point where I created the first project. We already have the project structure behind us. So how do we run our [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3534,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"categories":[160],"tags":[174,177],"class_list":["post-4221","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-stm32","tag-stm32","tag-stm32cubemx"],"_links":{"self":[{"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/posts\/4221","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=4221"}],"version-history":[{"count":3,"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/posts\/4221\/revisions"}],"predecessor-version":[{"id":4224,"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/posts\/4221\/revisions\/4224"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/media\/3534"}],"wp:attachment":[{"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/media?parent=4221"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/categories?post=4221"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/tags?post=4221"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}