{"id":1343,"date":"2022-11-20T06:17:16","date_gmt":"2022-11-20T06:17:16","guid":{"rendered":"https:\/\/blog.embeddedexpert.io\/?p=1343"},"modified":"2022-11-20T18:16:55","modified_gmt":"2022-11-20T18:16:55","slug":"getting-started-with-stm32f103-gpio-input","status":"publish","type":"post","link":"https:\/\/blog.embeddedexpert.io\/?p=1343","title":{"rendered":"Getting Started with STM32F103: GPIO Input"},"content":{"rendered":"\n<p><br><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"316\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/700px-STM32_Blue_Pill_top-1.jpg\" alt=\"\" class=\"wp-image-1344\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/700px-STM32_Blue_Pill_top-1.jpg 700w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/700px-STM32_Blue_Pill_top-1-300x135.jpg 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/700px-STM32_Blue_Pill_top-1-400x181.jpg 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/700px-STM32_Blue_Pill_top-1-250x113.jpg 250w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>In the previous guide (<a rel=\"noreferrer noopener\" href=\"https:\/\/blog.embeddedexpert.io\/?p=1332\" data-type=\"URL\" data-id=\"https:\/\/blog.embeddedexpert.io\/?p=1332\" target=\"_blank\">here<\/a>), we saw how to configure a GPIO pin as output. In this guide, we shall configure another pin an input to read from push button.<\/p>\n\n\n\n<p>In this guide, will cover the following:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Input modes.<\/li><li>Develop GPIO Input driver.<\/li><li>LED control using push button.<\/li><li>Demo.<\/li><\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Input modes:<\/h2>\n\n\n\n<p>GPIO input modes include<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>high impedance<\/li><li>pull-up<\/li><li>pull-down<\/li><\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"floating-high-impedance-tri-stated\">Floating, High Impedance, Tri-Stated<\/h4>\n\n\n\n<p>Floating, high impedance, and tri-stated are three terms that mean the same thing: the pin is just flopping in the breeze. Its state is indeterminate unless it is driven high or low externally. You only want to configure a pin as floating if you know it will be driven externally. Otherwise, configure the input using pulling resistors.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"pull-updown\">Pull Up\/Down<\/h4>\n\n\n\n<p>If an input is configured with an internal pull-up, it will be high unless it is externally driven low. Pull-down inputs do the opposite (&nbsp;they\u2019re low unless driven high).<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/04\/Screen-Shot-2022-04-01-at-5.52.38-PM-1024x768.png\" alt=\"\" class=\"wp-image-866\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/04\/Screen-Shot-2022-04-01-at-5.52.38-PM-1024x768.png 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/04\/Screen-Shot-2022-04-01-at-5.52.38-PM-300x225.png 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/04\/Screen-Shot-2022-04-01-at-5.52.38-PM-768x576.png 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/04\/Screen-Shot-2022-04-01-at-5.52.38-PM-1536x1152.png 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/04\/Screen-Shot-2022-04-01-at-5.52.38-PM-1150x862.png 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/04\/Screen-Shot-2022-04-01-at-5.52.38-PM-750x562.png 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/04\/Screen-Shot-2022-04-01-at-5.52.38-PM-400x300.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/04\/Screen-Shot-2022-04-01-at-5.52.38-PM-250x187.png 250w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/04\/Screen-Shot-2022-04-01-at-5.52.38-PM.png 1566w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. Developing GPIO Input Driver:<\/h2>\n\n\n\n<p><\/p>\n\n\n\n<p>In this guide, the push button is connected to PA1 and LED to PA0 as following:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"939\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.14.25-PM-1024x939.png\" alt=\"\" class=\"wp-image-1351\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.14.25-PM-1024x939.png 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.14.25-PM-300x275.png 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.14.25-PM-768x704.png 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.14.25-PM-1150x1055.png 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.14.25-PM-750x688.png 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.14.25-PM-400x367.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.14.25-PM-250x229.png 250w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.14.25-PM.png 1402w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>In order to configure PA1 to input mode the following shall be set:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Mode to be input mode.<\/li><li>Configuration to be Input with pull-up \/ pull-down.<\/li><li>Enable pull-up resistor.<\/li><\/ul>\n\n\n\n<p>To set the pin to input mode, the mode shall be set to 0 and configuration to be input with pull-up \/ pull-down:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"910\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-8.43.39-AM-1024x910.png\" alt=\"\" class=\"wp-image-1346\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-8.43.39-AM-1024x910.png 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-8.43.39-AM-300x267.png 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-8.43.39-AM-768x683.png 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-8.43.39-AM-1536x1366.png 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-8.43.39-AM-1150x1022.png 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-8.43.39-AM-750x667.png 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-8.43.39-AM-400x356.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-8.43.39-AM-250x222.png 250w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-8.43.39-AM.png 2020w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/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;}\">GPIOA-&gt;CRL&amp;=~GPIO_CRL_MODE1;\nGPIOA-&gt;CRL|=GPIO_CRL_CNF1_1;\nGPIOA-&gt;CRL&amp;=~GPIO_CRL_CNF1_0;<\/pre><\/div>\n\n\n\n<p>In order to activate pull-up or pull down resistor within the GPIO, the ODR register shall be set as following:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"460\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.02.16-AM-1024x460.png\" alt=\"\" class=\"wp-image-1347\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.02.16-AM-1024x460.png 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.02.16-AM-300x135.png 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.02.16-AM-768x345.png 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.02.16-AM-1536x690.png 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.02.16-AM-2048x921.png 2048w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.02.16-AM-1150x517.png 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.02.16-AM-750x337.png 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.02.16-AM-400x180.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.02.16-AM-250x112.png 250w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>ODR1 set to 0 means pull-down.<\/li><li>ODR1 set to 1 means pull-up.<\/li><\/ul>\n\n\n\n<p>Hence, by setting ODR1 to 1, the internal pull-up will be activated:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"474\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.04.42-AM-1024x474.png\" alt=\"\" class=\"wp-image-1348\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.04.42-AM-1024x474.png 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.04.42-AM-300x139.png 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.04.42-AM-768x355.png 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.04.42-AM-1536x711.png 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.04.42-AM-2048x948.png 2048w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.04.42-AM-1150x532.png 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.04.42-AM-750x347.png 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.04.42-AM-400x185.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.04.42-AM-250x116.png 250w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\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;}\">GPIOA-&gt;ODR|=GPIO_ODR_ODR1;<\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">3. LED control using push-button:<\/h2>\n\n\n\n<p><\/p>\n\n\n\n<p>The control algorithm when the push button is pressed, turn on the LED, when released, turn off the LED.<\/p>\n\n\n\n<p>Since the push-button configuration is pull-up, when the push-button is pressed, the respective bit is 0 and when released, the bit is 1.<\/p>\n\n\n\n<p>To read the push-button, we need to read IDR register and bit named IDR1:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"474\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.10.59-AM-1024x474.png\" alt=\"\" class=\"wp-image-1349\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.10.59-AM-1024x474.png 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.10.59-AM-300x139.png 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.10.59-AM-768x355.png 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.10.59-AM-1536x711.png 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.10.59-AM-2048x948.png 2048w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.10.59-AM-1150x532.png 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.10.59-AM-750x347.png 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.10.59-AM-400x185.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-20-at-9.10.59-AM-250x116.png 250w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Hence, the code for controlling the LED:<\/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;}\">\t\tif((GPIOA-&gt;IDR&amp;GPIO_IDR_IDR1)==0){\n\t\tGPIOA-&gt;BSRR=GPIO_BSRR_BS0;}\n\t\telse {\n\t\tGPIOA-&gt;BSRR=GPIO_BSRR_BR0;}<\/pre><\/div>\n\n\n\n<p>Hence, the entire code as following:<\/p>\n\n\n\n<p><\/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;stm32f1xx.h&quot;\n\n\n\nint main(void)\n{\n\tRCC-&gt;APB2ENR|=RCC_APB2ENR_IOPAEN;\n\n\t\/*Configure PA0 as output*\/\n\tGPIOA-&gt;CRL|=GPIO_CRL_MODE0;\n\tGPIOA-&gt;CRL&amp;=~(GPIO_CRL_CNF0);\n\n\t\/*Configure PA1 as input*\/\n\n\tGPIOA-&gt;CRL&amp;=~GPIO_CRL_MODE1;\n\tGPIOA-&gt;CRL|=GPIO_CRL_CNF1_1;\n\tGPIOA-&gt;CRL&amp;=~GPIO_CRL_CNF1_0;\n\tGPIOA-&gt;ODR|=GPIO_ODR_ODR1;\n\n\n\n\twhile(1)\n\t{\n\t\tif((GPIOA-&gt;IDR&amp;GPIO_IDR_IDR1)==0){\n\t\tGPIOA-&gt;BSRR=GPIO_BSRR_BS0;}\n\t\telse {\n\t\tGPIOA-&gt;BSRR=GPIO_BSRR_BR0;}\n\n\t}\n}\n<\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4. Demo:<\/h2>\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=\"LED control using push button with STM32\" width=\"1170\" height=\"658\" src=\"https:\/\/www.youtube.com\/embed\/LyIngjpdzek?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>Happy coding \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the previous guide (here), we saw how to configure a GPIO pin as output. In this guide, we shall configure another pin an input to read from push button. In this guide, will cover the following: Input modes. Develop GPIO Input driver. LED control using push button. Demo. 1. Input modes: GPIO input modes [&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-1343","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\/1343"}],"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=1343"}],"version-history":[{"count":2,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=\/wp\/v2\/posts\/1343\/revisions"}],"predecessor-version":[{"id":1352,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=\/wp\/v2\/posts\/1343\/revisions\/1352"}],"wp:attachment":[{"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1343"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1343"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1343"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}