{"id":3390,"date":"2025-04-17T13:21:51","date_gmt":"2025-04-17T13:21:51","guid":{"rendered":"https:\/\/blog.embeddedexpert.io\/?p=3390"},"modified":"2025-04-17T13:28:02","modified_gmt":"2025-04-17T13:28:02","slug":"getting-started-with-stm32h5-arm-cortex-m33-external-interrupt","status":"publish","type":"post","link":"https:\/\/blog.embeddedexpert.io\/?p=3390","title":{"rendered":"Getting Started with STM32H5 ARM Cortex M33: External Interrupt"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/ChatGPT-Image-Apr-17-2025-at-03_26_36-PM-1024x683.png\" alt=\"\" class=\"wp-image-3391\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/ChatGPT-Image-Apr-17-2025-at-03_26_36-PM-1024x683.png 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/ChatGPT-Image-Apr-17-2025-at-03_26_36-PM-300x200.png 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/ChatGPT-Image-Apr-17-2025-at-03_26_36-PM-768x512.png 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/ChatGPT-Image-Apr-17-2025-at-03_26_36-PM-1150x767.png 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/ChatGPT-Image-Apr-17-2025-at-03_26_36-PM-750x500.png 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/ChatGPT-Image-Apr-17-2025-at-03_26_36-PM-400x267.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/ChatGPT-Image-Apr-17-2025-at-03_26_36-PM-250x167.png 250w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/ChatGPT-Image-Apr-17-2025-at-03_26_36-PM.png 1536w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>This guide demonstrates how to configure an external GPIO interrupt on the STM32H5 Nucleo-144 board. You&#8217;ll learn how to connect a push-button and trigger an interrupt using STM32CubeMX and HAL libraries.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>In this guide, we shall cover the following:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>What is external interrupt.<\/li>\n\n\n\n<li>STM32CubeIDE setup.<\/li>\n\n\n\n<li>Firmware development.<\/li>\n\n\n\n<li>Results.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">1. What is External Interrupt:<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">External Interrupts :&nbsp;<\/h3>\n\n\n\n<p>External interrupts come from input-output I\/O devices.&nbsp;<\/p>\n\n\n\n<p><strong>Some examples that cause external interrupts:&nbsp;<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u00a0I\/O devices requesting transfer of data\u00a0<\/li>\n\n\n\n<li>\u00a0I\/O devices finished the transfer of data. When a program executes in an endless loop and thus exceeds its time limit, an external interrupt occurs which is Timeout Interrupt.<\/li>\n\n\n\n<li>While transferring the CPU\u2019s complete state to a non-destructive memory in a few milliseconds before power ceases, then an external interrupt occurs.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Advantages of External Interrupts<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Increased Flexibility:\u00a0<\/strong>External interrupts allow a system to respond to external events, such as a user input or an external sensor, in real-time. This can greatly improve the system\u2019s flexibility, as it is not limited to a fixed operating cycle.<\/li>\n\n\n\n<li><strong>Ability to Respond to External Events:\u00a0<\/strong>External interrupts provide a mechanism for the system to respond to external events that may occur at any time. This allows the system to perform tasks in response to changes in the environment, such as user input or incoming data, without the need for continuous monitoring.<\/li>\n\n\n\n<li><strong>Improved Performance and Efficiency:\u00a0<\/strong>By allowing the system to respond to external events in real-time, external interrupts can greatly improve the system\u2019s performance and efficiency, as it is not bogged down by continuous monitoring for changes.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Applications of External Interrupts<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Input Devices:\u00a0<\/strong>External interrupts are commonly used in input devices, such as keyboards, mice, and touchpads, to respond to user input in real-time.<\/li>\n\n\n\n<li><strong>Data Acquisition Systems:\u00a0<\/strong>External interrupts can be used in data acquisition systems to respond to incoming data and process it in real-time.<\/li>\n\n\n\n<li><strong>Robotics:\u00a0<\/strong>External interrupts can be used in robotics systems to respond to external events, such as sensor inputs or user commands.<\/li>\n\n\n\n<li><strong>Real-time Systems:\u00a0<\/strong>External interrupts are commonly used in real-time systems, such as process control systems and medical equipment, to provide a mechanism for responding to external events in real-time.<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. STM32CubeIDE Setup:<\/h2>\n\n\n\n<p><\/p>\n\n\n\n<p>Before we start, we need to find some information about H563Zi-Nucleo-144 board, mainly the push button and LEDs.<\/p>\n\n\n\n<p>From the schematic of the board, we can find the following:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"831\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-10-36-1024x831.jpg\" alt=\"\" class=\"wp-image-3392\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-10-36-1024x831.jpg 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-10-36-300x243.jpg 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-10-36-768x623.jpg 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-10-36-1536x1247.jpg 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-10-36-1150x933.jpg 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-10-36-750x609.jpg 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-10-36-400x325.jpg 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-10-36-250x203.jpg 250w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-10-36.jpg 1720w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>We can find that the blue button is connected to PC13 and it is has pull-down resistor which means when pressed, the state on the GPIO pin will be high (3.3V) and when released will be low (0V).<\/p>\n\n\n\n<p>Also, we shall use the user LEDs.<\/p>\n\n\n\n<p>We shall nominate the red led for this guide.<\/p>\n\n\n\n<p>The red LED is connected to PG4 as shown below:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"358\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_15-35-07-1024x358.jpg\" alt=\"\" class=\"wp-image-3393\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_15-35-07-1024x358.jpg 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_15-35-07-300x105.jpg 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_15-35-07-768x269.jpg 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_15-35-07-1536x538.jpg 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_15-35-07-1150x402.jpg 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_15-35-07-750x262.jpg 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_15-35-07-400x140.jpg 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_15-35-07-250x87.jpg 250w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_15-35-07.jpg 1846w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>We start off by creating new project with name of Internal EXTI. For how to create project using STM32CubeIDE, please refer to this guide\u00a0<a href=\"https:\/\/blog.embeddedexpert.io\/?p=2789\" target=\"_blank\" rel=\"noreferrer noopener\">here<\/a>.<\/p>\n\n\n\n<p>After creating the project, the STM32CubeMX configuration window will appear.<\/p>\n\n\n\n<p>Set PC13 as GPIO_EXTI13 as following:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"656\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_15-33-07-1024x656.jpg\" alt=\"\" class=\"wp-image-3394\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_15-33-07-1024x656.jpg 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_15-33-07-300x192.jpg 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_15-33-07-768x492.jpg 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_15-33-07-1536x983.jpg 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_15-33-07-2048x1311.jpg 2048w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_15-33-07-1150x736.jpg 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_15-33-07-750x480.jpg 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_15-33-07-400x256.jpg 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_15-33-07-250x160.jpg 250w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Also, set PG4 as output where the LED is connected as following:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"535\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-16-13-1024x535.jpg\" alt=\"\" class=\"wp-image-3395\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-16-13-1024x535.jpg 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-16-13-300x157.jpg 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-16-13-768x401.jpg 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-16-13-1536x802.jpg 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-16-13-1150x601.jpg 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-16-13-750x392.jpg 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-16-13-400x209.jpg 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-16-13-250x131.jpg 250w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-16-13.jpg 1666w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Next, from System Core Select NVIC as enable EXTI Line13 Interrupt as following:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"910\" height=\"1024\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_15-36-02-910x1024.jpg\" alt=\"\" class=\"wp-image-3396\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_15-36-02-910x1024.jpg 910w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_15-36-02-267x300.jpg 267w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_15-36-02-768x865.jpg 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_15-36-02-1365x1536.jpg 1365w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_15-36-02-1150x1295.jpg 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_15-36-02-750x844.jpg 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_15-36-02-400x450.jpg 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_15-36-02-250x281.jpg 250w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_15-36-02.jpg 1480w\" sizes=\"(max-width: 910px) 100vw, 910px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Next, go to GPIO, select PC13 and set the edge to be rising edge as following:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"901\" height=\"1024\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-17-59-901x1024.jpg\" alt=\"\" class=\"wp-image-3397\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-17-59-901x1024.jpg 901w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-17-59-264x300.jpg 264w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-17-59-768x873.jpg 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-17-59-1352x1536.jpg 1352w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-17-59-1150x1307.jpg 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-17-59-750x852.jpg 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-17-59-400x455.jpg 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-17-59-250x284.jpg 250w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-17-59.jpg 1732w\" sizes=\"(max-width: 901px) 100vw, 901px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Note: STM32 supports the following:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Rising edge (Go from 0 to 3.3V).<\/li>\n\n\n\n<li>Falling edge (Go from 3V3 to 0).<\/li>\n\n\n\n<li>Rising and falling edge.<\/li>\n<\/ul>\n\n\n\n<p>Thats all for the configuration.<\/p>\n\n\n\n<p>Save the project and this will generate the code.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. Firmware Development:<\/h2>\n\n\n\n<p>After the project has been generated.<\/p>\n\n\n\n<p>In use code begin 4 in main.c:<\/p>\n\n\n\n<p>When the external interrupt is generated, one of these two function define as weak shall be called:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"529\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-24-31-1024x529.jpg\" alt=\"\" class=\"wp-image-3400\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-24-31-1024x529.jpg 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-24-31-300x155.jpg 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-24-31-768x397.jpg 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-24-31-1536x793.jpg 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-24-31-2048x1057.jpg 2048w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-24-31-1150x594.jpg 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-24-31-750x387.jpg 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-24-31-400x207.jpg 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/04\/2025-04-17_16-24-31-250x129.jpg 250w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>These functions are define in stm32h5xx_hal_gpio.c source file.<\/p>\n\n\n\n<p>Since the external interrupt is configured as rising edge, the Rising callback function shall be called.<\/p>\n\n\n\n<p>Hence, in user code begin 4:<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;clike&quot;,&quot;mime&quot;:&quot;text\/x-csrc&quot;,&quot;theme&quot;:&quot;dracula&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;C&quot;,&quot;language&quot;:&quot;C&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;c&quot;}\">void HAL_GPIO_EXTI_Rising_Callback(uint16_t GPIO_Pin)\n{\n\tif(GPIO_Pin==GPIO_PIN_13)\n\t{\n\t\tHAL_GPIO_TogglePin(GPIOG,GPIO_PIN_4);\n\t}\n}\n<\/pre><\/div>\n\n\n\n<p>In the interrupt, check if it is pin 13, if it, toggle the LED.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>That all for this guide.<\/p>\n\n\n\n<p>Save the project, build and run it on your board.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2024\/07\/2024-07-12_15-03-3.jpg\" alt=\"\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4. Result:<\/h2>\n\n\n\n<p>You should get the following when you press the button.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"External GPIO Interrupt on STM32H5\" width=\"1170\" height=\"658\" src=\"https:\/\/www.youtube.com\/embed\/3nhhhLSnOj4?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>Happy coding \ud83d\ude09<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This guide demonstrates how to configure an external GPIO interrupt on the STM32H5 Nucleo-144 board. You&#8217;ll learn how to connect a push-button and trigger an interrupt using STM32CubeMX and HAL libraries. In this guide, we shall cover the following: 1. What is External Interrupt: External Interrupts :&nbsp; External interrupts come from input-output I\/O devices.&nbsp; Some [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,11,12],"tags":[],"class_list":["post-3390","post","type-post","status-publish","format-standard","hentry","category-embedded-systems","category-peripheral-drivers","category-stm32"],"_links":{"self":[{"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=\/wp\/v2\/posts\/3390"}],"collection":[{"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3390"}],"version-history":[{"count":2,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=\/wp\/v2\/posts\/3390\/revisions"}],"predecessor-version":[{"id":3401,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=\/wp\/v2\/posts\/3390\/revisions\/3401"}],"wp:attachment":[{"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3390"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3390"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3390"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}