{"id":514,"date":"2021-10-21T03:59:17","date_gmt":"2021-10-21T03:59:17","guid":{"rendered":"https:\/\/blog.embeddedexpert.io\/?p=514"},"modified":"2021-10-21T03:59:19","modified_gmt":"2021-10-21T03:59:19","slug":"getting-started-with-stm32f7-blinking-led","status":"publish","type":"post","link":"https:\/\/blog.embeddedexpert.io\/?p=514","title":{"rendered":"Getting started with STM32F7: Blinking LED"},"content":{"rendered":"\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-fullwidth_image\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"647\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/stm32-nucleo-f429zi-stm32f767zit6-arm-cortex-m7-800x647.jpg\" alt=\"\" class=\"wp-image-515\" \/><figcaption>STM32F767Zi Nucleo-144 Board <\/figcaption><\/figure><\/div>\n\n\n\n<p>In this new guide series, we shall start developing peripheral for ARM Cortex M7 based MCU with STM32F7 specially STM32F767Zi Nucelo-144.<\/p>\n\n\n\n<p>In this guide, we will cover the following:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Getting the documents<\/li><li>Developing bare metal GPIO output<\/li><li>Demo<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">1. Getting the Documents:<\/h2>\n\n\n\n<p>In this guide and the upcoming guides, will need the following three documents<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>STM32F767 Datasheet<\/li><li>STM32F767 Reference Manual<\/li><li>Nucleo-144 User Manual<\/li><\/ul>\n\n\n\n<p>You can search google for those files or simply get them from here:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Datasheet (<a rel=\"noreferrer noopener\" href=\"https:\/\/www.st.com\/resource\/en\/datasheet\/stm32f765zi.pdf\" data-type=\"URL\" data-id=\"https:\/\/www.st.com\/resource\/en\/datasheet\/stm32f765zi.pdf\" target=\"_blank\">link<\/a>).<\/li><li>Reference Manual (<a rel=\"noreferrer noopener\" href=\"https:\/\/www.st.com\/resource\/en\/reference_manual\/dm00224583-stm32f76xxx-and-stm32f77xxx-advanced-arm-based-32-bit-mcus-stmicroelectronics.pdf\" data-type=\"URL\" data-id=\"https:\/\/www.st.com\/resource\/en\/reference_manual\/dm00224583-stm32f76xxx-and-stm32f77xxx-advanced-arm-based-32-bit-mcus-stmicroelectronics.pdf\" target=\"_blank\">link<\/a>).<\/li><li>Nucelo-144 User Manual (<a rel=\"noreferrer noopener\" href=\"https:\/\/www.st.com\/resource\/en\/user_manual\/dm00244518-stm32-nucleo144-boards-mb1137-stmicroelectronics.pdf\" data-type=\"URL\" data-id=\"https:\/\/www.st.com\/resource\/en\/user_manual\/dm00244518-stm32-nucleo144-boards-mb1137-stmicroelectronics.pdf\" target=\"_blank\">link<\/a>).<\/li><\/ul>\n\n\n\n<p>Follow this link to see how to download, install, install FPU and start new project using keil uVision (<a href=\"https:\/\/muse.ai\/c\/kgiZPKe\" data-type=\"URL\" data-id=\"https:\/\/muse.ai\/c\/kgiZPKe\" target=\"_blank\" rel=\"noreferrer noopener\">link<\/a>).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. Developing Bare Metal GPIO Output:<\/h2>\n\n\n\n<p>STM32F767 Nucleo-144 has three user LEDs which they are Green, Red and Blue LEDs. <\/p>\n\n\n\n<p>In order to turn on\/off one of them we need to figure out which pins those LED are connected to, from Nucleo-144 user manual, LED section (6.5) , we can get the LED pins which they are the following:<\/p>\n\n\n\n<figure class=\"wp-block-table aligncenter is-style-stripes\"><table><tbody><tr><td>LED Colour<\/td><td>Pin<\/td><\/tr><tr><td>Green <\/td><td>PB0<\/td><\/tr><tr><td>Blue<\/td><td>PB7<\/td><\/tr><tr><td>Red<\/td><td>PB14<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>In this experiment, we shall use the blue LED which is connected to PB7.<\/p>\n\n\n\n<p>Before we start don&#8217;t forget to add the chip header as following:<\/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;&quot;,&quot;language&quot;:&quot;C&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;c&quot;}\">#include &quot;stm32f7xx.h&quot;\n<\/pre><\/div>\n\n\n\n<p>To star of, we need to enable clock access to GPIO B. To enable clock access, we need to find which bus is the GPIOB is connected to. We can find this from figure 2 from the  datasheet.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"608\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.25.23-AM-1024x608.png\" alt=\"\" class=\"wp-image-516\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.25.23-AM-1024x608.png 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.25.23-AM-300x178.png 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.25.23-AM-768x456.png 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.25.23-AM-1150x683.png 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.25.23-AM-750x445.png 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.25.23-AM-400x237.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.25.23-AM-250x148.png 250w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.25.23-AM.png 1452w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>From the figure, GPIOB is connected to AHB1. To enable peripherals clock connected to AHB1, we need to go to the reference manual and see AHB1ENR register.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"443\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.28.06-AM-1024x443.png\" alt=\"\" class=\"wp-image-517\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.28.06-AM-1024x443.png 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.28.06-AM-300x130.png 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.28.06-AM-768x332.png 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.28.06-AM-1536x664.png 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.28.06-AM-2048x886.png 2048w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.28.06-AM-1150x497.png 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.28.06-AM-750x324.png 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.28.06-AM-400x173.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.28.06-AM-250x108.png 250w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>From the register, we see that bit 1 is responsible to enable clock access for GPIOB. Hence we can use CMSIS macro offered by STMicroelectronics to enable clock access as following:<\/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;&quot;,&quot;language&quot;:&quot;C&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;c&quot;}\">RCC-&gt;AHB1ENR|=RCC_AHB1ENR_GPIOBEN;<\/pre><\/div>\n\n\n\n<p>After we enabled clock access to GPIOB, we need to configure PB7 as output, we head to GPIO section of reference manual and the MODER register to configure the pin.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"621\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.38.11-AM-1024x621.png\" alt=\"\" class=\"wp-image-518\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.38.11-AM-1024x621.png 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.38.11-AM-300x182.png 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.38.11-AM-768x466.png 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.38.11-AM-1536x931.png 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.38.11-AM-2048x1242.png 2048w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.38.11-AM-1150x697.png 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.38.11-AM-750x455.png 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.38.11-AM-400x243.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.38.11-AM-250x152.png 250w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>As seen from the register, we can set pin 7 as output as following:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Set bit 14 to 1<\/li><li>Reset bit 15 to 0<\/li><\/ul>\n\n\n\n<p>We can do this as following:<\/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;&quot;,&quot;language&quot;:&quot;C&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;c&quot;}\">\/\/set PB7 as output\n\tGPIOB-&gt;MODER|=GPIO_MODER_MODER7_0;\n\tGPIOB-&gt;MODER&amp;=~GPIO_MODER_MODER7_1;<\/pre><\/div>\n\n\n\n<p>Now, after we configured the pin as output, we start our while(1) loop.<\/p>\n\n\n\n<p>In the while loop, we set the pin to 1.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"511\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.43.18-AM-1024x511.png\" alt=\"\" class=\"wp-image-519\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.43.18-AM-1024x511.png 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.43.18-AM-300x150.png 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.43.18-AM-768x384.png 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.43.18-AM-1536x767.png 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.43.18-AM-1150x574.png 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.43.18-AM-750x375.png 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.43.18-AM-400x200.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.43.18-AM-250x125.png 250w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-21-at-6.43.18-AM.png 1918w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>From the output data register, we can set bit 7 to 1 to turn on the LED and 0 to turn off the LED.<\/p>\n\n\n\n<p>We can turn on the LED as following<\/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;&quot;,&quot;language&quot;:&quot;C&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;c&quot;}\">GPIOB-&gt;ODR|=GPIO_ODR_OD7;<\/pre><\/div>\n\n\n\n<p>Wait a little bit of time using for loop as following<\/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;&quot;,&quot;language&quot;:&quot;C&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;c&quot;}\">for (volatile int i=0;i&lt;1000000;i++);<\/pre><\/div>\n\n\n\n<p>After the loop, set the PB7 back to zero as following<\/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;&quot;,&quot;language&quot;:&quot;C&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;c&quot;}\">GPIOB-&gt;ODR&amp;=~GPIO_ODR_OD7;<\/pre><\/div>\n\n\n\n<p>And wait again <\/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;&quot;,&quot;language&quot;:&quot;C&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;c&quot;}\">for (volatile int i=0;i&lt;1000000;i++);<\/pre><\/div>\n\n\n\n<p>Hence, the entire code shall be something like this:<\/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;&quot;,&quot;language&quot;:&quot;C&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;c&quot;}\">#include &quot;stm32f7xx.h&quot;                  \/\/ Device header\n\nint main(void)\n\t{\n\t\/\/enable clock access to GPIOB\n\tRCC-&gt;AHB1ENR|=RCC_AHB1ENR_GPIOBEN;\n\t\/\/set PB7 as output\n\tGPIOB-&gt;MODER|=GPIO_MODER_MODER7_0;\n\tGPIOB-&gt;MODER&amp;=~GPIO_MODER_MODER7_1;\n\t\n\twhile(1)\n\t\t{\n\t\t\/\/set PB7 to high\n\t\tGPIOB-&gt;ODR|=GPIO_ODR_OD7;\n\t\t\/\/delay for a little bit\n\t\tfor (volatile int i=0;i&lt;1000000;i++);\n\t\t\/\/set PB7 back to zero\n\t\tGPIOB-&gt;ODR&amp;=~GPIO_ODR_OD7;\n\t\t\/\/delay for a little bit\n\t\tfor (volatile int i=0;i&lt;1000000;i++);\n\t\t}\n\t\n\t\n\t\n\t}<\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">3. Demo:<\/h2>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/10\/IMG_6834.mp4\"><\/video><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>In this new guide series, we shall start developing peripheral for ARM Cortex M7 based MCU with STM32F7 specially STM32F767Zi Nucelo-144. In this guide, we will cover the following: Getting the documents Developing bare metal GPIO output Demo 1. Getting the Documents: In this guide and the upcoming guides, will need the following three documents [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":522,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,11,12],"tags":[22,24,23],"class_list":["post-514","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-embedded-systems","category-peripheral-drivers","category-stm32","tag-arm_cortex_m7","tag-registers-only","tag-stm32f767"],"_links":{"self":[{"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=\/wp\/v2\/posts\/514"}],"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=514"}],"version-history":[{"count":2,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=\/wp\/v2\/posts\/514\/revisions"}],"predecessor-version":[{"id":523,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=\/wp\/v2\/posts\/514\/revisions\/523"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=\/wp\/v2\/media\/522"}],"wp:attachment":[{"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=514"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=514"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=514"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}