{"id":1332,"date":"2022-11-17T05:19:21","date_gmt":"2022-11-17T05:19:21","guid":{"rendered":"https:\/\/blog.embeddedexpert.io\/?p=1332"},"modified":"2022-11-17T05:23:36","modified_gmt":"2022-11-17T05:23:36","slug":"getting-started-with-stm32f103-blinking-an-led","status":"publish","type":"post","link":"https:\/\/blog.embeddedexpert.io\/?p=1332","title":{"rendered":"Getting Started with STM32F103: Blinking an LED"},"content":{"rendered":"\n<div class=\"wp-block-image\"><figure class=\"aligncenter 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.jpg\" alt=\"\" class=\"wp-image-1333\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/700px-STM32_Blue_Pill_top.jpg 700w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/700px-STM32_Blue_Pill_top-300x135.jpg 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/700px-STM32_Blue_Pill_top-400x181.jpg 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/700px-STM32_Blue_Pill_top-250x113.jpg 250w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><figcaption>STM32F103C8 aka Bluepill<\/figcaption><\/figure><\/div>\n\n\n\n<p>In this new guide series, we shall develop some drivers for the most widely used STM32 which STM32F103 aka bluepill.<\/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\"><li>Setting up the environment <\/li><li>Getting the required documents.<\/li><li>Developing GPIO output driver.<\/li><li>Code.<\/li><li>Demo.<\/li><\/ul>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Setting up the environment:<\/h2>\n\n\n\n<p>To setup the environment, please refer to the following topic <a href=\"https:\/\/blog.embeddedexpert.io\/?p=1255\" data-type=\"URL\" data-id=\"https:\/\/blog.embeddedexpert.io\/?p=1255\" target=\"_blank\" rel=\"noreferrer noopener\">here<\/a>.<\/p>\n\n\n\n<p>Just modify it for STM32F103.<\/p>\n\n\n\n<p>For the symbols, use the 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;}\">STM32F103xB<\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. Getting the required documents:<\/h2>\n\n\n\n<p>First document needed is the datasheet.<\/p>\n\n\n\n<p>You can get the datasheet from <a href=\"https:\/\/www.st.com\/resource\/en\/datasheet\/cd00161566.pdf\" data-type=\"URL\" data-id=\"https:\/\/www.st.com\/resource\/en\/datasheet\/cd00161566.pdf\" target=\"_blank\" rel=\"noreferrer noopener\">here<\/a>.<\/p>\n\n\n\n<p>Also, you need the reference manual from <a href=\"https:\/\/www.st.com\/resource\/en\/reference_manual\/cd00171190-stm32f101xx-stm32f102xx-stm32f103xx-stm32f105xx-and-stm32f107xx-advanced-arm-based-32-bit-mcus-stmicroelectronics.pdf\" data-type=\"URL\" data-id=\"https:\/\/www.st.com\/resource\/en\/reference_manual\/cd00171190-stm32f101xx-stm32f102xx-stm32f103xx-stm32f105xx-and-stm32f107xx-advanced-arm-based-32-bit-mcus-stmicroelectronics.pdf\" target=\"_blank\" rel=\"noreferrer noopener\">here<\/a>.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. Developing GPIO Output Driver:<\/h2>\n\n\n\n<p><\/p>\n\n\n\n<p>Since the guide uses external LED, we shall use GPIOA pin 0 to blink the LED. The connection the LED to STM32F103 as following:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"773\" height=\"1024\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-7.48.56-AM-773x1024.png\" alt=\"\" class=\"wp-image-1334\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-7.48.56-AM-773x1024.png 773w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-7.48.56-AM-226x300.png 226w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-7.48.56-AM-768x1017.png 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-7.48.56-AM-750x994.png 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-7.48.56-AM-400x530.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-7.48.56-AM-250x331.png 250w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-7.48.56-AM.png 776w\" sizes=\"(max-width: 773px) 100vw, 773px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Since the LED is connected to Port A, we need to enable clock access to GPIO. From the datasheet, we can find the block diagram:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"987\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-7.22.38-AM-1024x987.png\" alt=\"\" class=\"wp-image-1335\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-7.22.38-AM-1024x987.png 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-7.22.38-AM-300x289.png 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-7.22.38-AM-768x741.png 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-7.22.38-AM-750x723.png 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-7.22.38-AM-400x386.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-7.22.38-AM-250x241.png 250w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-7.22.38-AM.png 1118w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Since GPIOA is connected to APB2 bus, we can enable clock access to GPIOA from RCC_APB2ENR register:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"239\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-7.40.42-AM-1024x239.png\" alt=\"\" class=\"wp-image-1336\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-7.40.42-AM-1024x239.png 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-7.40.42-AM-300x70.png 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-7.40.42-AM-768x179.png 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-7.40.42-AM-1536x359.png 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-7.40.42-AM-1150x268.png 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-7.40.42-AM-750x175.png 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-7.40.42-AM-400x93.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-7.40.42-AM-250x58.png 250w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-7.40.42-AM.png 1988w\" 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;}\">RCC-&gt;APB2ENR|=RCC_APB2ENR_IOPAEN;<\/pre><\/div>\n\n\n\n<p>Then GPIO configuration:<\/p>\n\n\n\n<p>Since the LED is connected to PA0, we need to use Port configuration register low (CRL) which can configure pins from 0 to 7 while Port configuration register high (CRH) configure pins from 8 to 15.<\/p>\n\n\n\n<p>First thing we need the following:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Configure the pin as Output with maximum speed of 50MHz.<\/li><li>Set the output mode to be output push-pull.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"997\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-8.09.39-AM-1024x997.png\" alt=\"\" class=\"wp-image-1337\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-8.09.39-AM-1024x997.png 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-8.09.39-AM-300x292.png 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-8.09.39-AM-768x748.png 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-8.09.39-AM-1536x1496.png 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-8.09.39-AM-1150x1120.png 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-8.09.39-AM-750x730.png 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-8.09.39-AM-400x389.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-8.09.39-AM-250x243.png 250w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-8.09.39-AM.png 1976w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Hence, we need to set bit 0 and 1 to 1 (MODE0) and bit 2 and 3 to 0 (CNF0).<\/p>\n\n\n\n<p>We shall use macros offered by STM32F1 header file<\/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|=GPIO_CRL_MODE0;\n\tGPIOA-&gt;CRL&amp;=~(GPIO_CRL_CNF0);<\/pre><\/div>\n\n\n\n<p>Then we need to use BSRR register to set and reset the bit:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"618\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-8.22.04-AM-1024x618.png\" alt=\"\" class=\"wp-image-1340\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-8.22.04-AM-1024x618.png 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-8.22.04-AM-300x181.png 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-8.22.04-AM-768x463.png 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-8.22.04-AM-1536x927.png 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-8.22.04-AM-1150x694.png 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-8.22.04-AM-750x452.png 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-8.22.04-AM-400x241.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-8.22.04-AM-250x151.png 250w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-17-at-8.22.04-AM.png 1976w\" 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;}\">\t\tGPIOA-&gt;BSRR=GPIO_BSRR_BS0;\n\t\tfor(int i=0;i&lt;100000;i++);\/*Delay*\/\n\t\tGPIOA-&gt;BSRR=GPIO_BSRR_BR0;\n\t\tfor(int i=0;i&lt;100000;i++);\/*Delay*\/<\/pre><\/div>\n\n\n\n<p>Hence, the code 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;stm32f1xx.h&quot;\n\n\n\nint main(void)\n{\n\tRCC-&gt;APB2ENR|=RCC_APB2ENR_IOPAEN;\n\tGPIOA-&gt;CRL|=GPIO_CRL_MODE0;\n\tGPIOA-&gt;CRL&amp;=~(GPIO_CRL_CNF0);\n\n\twhile(1)\n\t{\n\t\tGPIOA-&gt;BSRR=GPIO_BSRR_BS0;\n\t\tfor(int i=0;i&lt;100000;i++);\/*Delay*\/\n\t\tGPIOA-&gt;BSRR=GPIO_BSRR_BR0;\n\t\tfor(int i=0;i&lt;100000;i++);\/*Delay*\/\n\n\n\t}\n}\n<\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4. Code:<\/h2>\n\n\n\n<p>You may download the code from here:<\/p>\n\n\n\n<div class=\"wp-block-file\"><a href=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/blinky.zip\">blinky<\/a><a href=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2022\/11\/blinky.zip\" class=\"wp-block-file__button\" download>Download<\/a><\/div>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">5. Demo:<\/h2>\n\n\n\n<p><\/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=\"Blinking LED on STM32F103\" width=\"1170\" height=\"658\" src=\"https:\/\/www.youtube.com\/embed\/5KYFihlYXzI?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 this new guide series, we shall develop some drivers for the most widely used STM32 which STM32F103 aka bluepill. In this guide, we shall cover the following: Setting up the environment Getting the required documents. Developing GPIO output driver. Code. Demo. 1. Setting up the environment: To setup the environment, please refer to the [&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-1332","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\/1332"}],"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=1332"}],"version-history":[{"count":2,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=\/wp\/v2\/posts\/1332\/revisions"}],"predecessor-version":[{"id":1341,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=\/wp\/v2\/posts\/1332\/revisions\/1341"}],"wp:attachment":[{"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1332"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1332"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1332"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}