{"id":611,"date":"2021-12-03T04:14:33","date_gmt":"2021-12-03T04:14:33","guid":{"rendered":"https:\/\/blog.embeddedexpert.io\/?p=611"},"modified":"2021-12-03T04:14:35","modified_gmt":"2021-12-03T04:14:35","slug":"working-with-stm32f7-and-adc-part-3-single-channel-continuous-conversion-with-interrupt","status":"publish","type":"post","link":"https:\/\/blog.embeddedexpert.io\/?p=611","title":{"rendered":"Working with STM32F7 and ADC part 3: Single channel Continuous Conversion with interrupt"},"content":{"rendered":"\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"323\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/1200px-ADC_Symbol.svg_-1-1024x323.png\" alt=\"\" class=\"wp-image-225\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/1200px-ADC_Symbol.svg_-1-1024x323.png 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/1200px-ADC_Symbol.svg_-1-300x95.png 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/1200px-ADC_Symbol.svg_-1-768x243.png 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/1200px-ADC_Symbol.svg_-1-1150x363.png 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/1200px-ADC_Symbol.svg_-1-750x237.png 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/1200px-ADC_Symbol.svg_-1-400x126.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/1200px-ADC_Symbol.svg_-1-250x79.png 250w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/07\/1200px-ADC_Symbol.svg_-1.png 1200w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<p>In the previous guide (<a rel=\"noreferrer noopener\" href=\"https:\/\/blog.embeddedexpert.io\/?p=581\" data-type=\"URL\" data-id=\"https:\/\/blog.embeddedexpert.io\/?p=581\" target=\"_blank\">here<\/a>), We took a look for how the continuous conversion working in polling mode, in this guide, we shall use interrupt for to update the value in the interrupt handler rather than manually.<\/p>\n\n\n\n<p>In this guid will cover the following<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Difference between polling mode and interrupt mode<\/li><li>Extra steps needed<\/li><li>Schematic<\/li><li>Code<\/li><li>Result<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">1. Difference between polling mode and interrupt mode&nbsp;<\/h2>\n\n\n\n<p>In polling as we saw in previous two guides, we need to wait for end of conversion each time we want to read the adc value as illustrated in figure below.&nbsp;<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"478\" height=\"1024\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.03.43-AM-478x1024.png\" alt=\"\" class=\"wp-image-237\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.03.43-AM-478x1024.png 478w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.03.43-AM-140x300.png 140w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.03.43-AM-400x856.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.03.43-AM-250x535.png 250w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.03.43-AM.png 510w\" sizes=\"(max-width: 478px) 100vw, 478px\" \/><figcaption>polling mode<\/figcaption><\/figure><\/div>\n\n\n\n<p>On another hand, in interrupt mode, the adc value can be update in background (no need to wait for EOC) since in handled in the interrupt handler function as illustrated in figure below.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"933\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.06.43-AM-1024x933.png\" alt=\"\" class=\"wp-image-238\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.06.43-AM-1024x933.png 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.06.43-AM-300x273.png 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.06.43-AM-768x700.png 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.06.43-AM-1150x1048.png 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.06.43-AM-750x684.png 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.06.43-AM-400x365.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.06.43-AM-250x228.png 250w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.06.43-AM.png 1198w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption>Interrupt mode<\/figcaption><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">2. Extra steps needed to enable interrupt.<\/h2>\n\n\n\n<p>The extras steps needed from part 1 and part 2 of this guid as following<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Declare the adc_data as volatile int variable as following:<\/li><\/ul>\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;}\">volatile int adc_value;<\/pre><\/div>\n\n\n\n<ul class=\"wp-block-list\"><li>Enable end of conversion interrupt from ADC_CR1 as shown bellow:<\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"378\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.23.13-AM-1024x378.png\" alt=\"\" class=\"wp-image-239\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.23.13-AM-1024x378.png 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.23.13-AM-300x111.png 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.23.13-AM-768x283.png 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.23.13-AM-1536x566.png 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.23.13-AM-2048x755.png 2048w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.23.13-AM-1150x424.png 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.23.13-AM-750x277.png 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.23.13-AM-400x148.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-08-02-at-10.23.13-AM-250x92.png 250w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption>Enable end of conversion interrupt<\/figcaption><\/figure><\/div>\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;}\">ADC1-&gt;CR1|=ADC_CR1_EOCIE;<\/pre><\/div>\n\n\n\n<ul class=\"wp-block-list\"><li>Handle the ADC interrupt as follow:<\/li><\/ul>\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;}\">void ADC_IRQHandler(void)\n{\n\t\/*Check if end-of-conversion interrupt occurred*\/\n\t\n\tif(ADC1-&gt;SR &amp; ADC_SR_EOC)\n\t{\n\t\t\/*Clear EOC flag*\/\n\t\tADC1-&gt;SR &amp;=~ADC_SR_EOC;\n\n\t\t\/*Do something*\/\n\t\tadc_data=ADC1-&gt;DR;\n\t}\n\n}<\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">3. Schematic<\/h2>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"948\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-11-at-7.21.34-AM-1024x948.png\" alt=\"\" class=\"wp-image-563\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-11-at-7.21.34-AM-1024x948.png 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-11-at-7.21.34-AM-300x278.png 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-11-at-7.21.34-AM-768x711.png 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-11-at-7.21.34-AM-1536x1421.png 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-11-at-7.21.34-AM-1150x1064.png 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-11-at-7.21.34-AM-750x694.png 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-11-at-7.21.34-AM-400x370.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-11-at-7.21.34-AM-250x231.png 250w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-11-at-7.21.34-AM.png 1662w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>The connection is as following:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Right leg of the pot to 3V3\u00a0<\/li><li>Middle leg to A0 of Arduino connection (PA3)<\/li><li>Left leg to GND<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">4. Code<\/h2>\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\n#define CH3 0x03\nvolatile int adc_data;\nint main(void)\n\t\t{\n\t\t\n\t\tRCC-&gt;AHB1ENR|=RCC_AHB1ENR_GPIOAEN;\n\t\tRCC-&gt;APB2ENR|=RCC_APB2ENR_ADC1EN;\n\n\t\tGPIOA-&gt;MODER|=GPIO_MODER_MODER3_0|GPIO_MODER_MODER3_1;\n\t\tADC1-&gt;SQR1=0;\n\t\tADC1-&gt;SQR3=(CH3&lt;&lt;0);\n\t\tADC1-&gt;CR1|=ADC_CR1_EOCIE;\n\t\tNVIC_EnableIRQ(ADC_IRQn);\n\t\tADC1-&gt;CR2|=ADC_CR2_CONT;\n\t\tADC1-&gt;CR2|=ADC_CR2_ADON;\n\t\tADC1-&gt;CR2|=ADC_CR2_SWSTART;\n\t\t\n\t\t\n\t\twhile(1){}\n\t\t\n\t\t}\n\t\t\n\t\tvoid ADC_IRQHandler(void)\n{\n\t\/*Check if end-of-conversion interrupt occurred*\/\n\t\n\tif(ADC1-&gt;SR &amp; ADC_SR_EOC)\n\t{\n\t\t\/*Clear EOC flag*\/\n\t\tADC1-&gt;SR &amp;=~ADC_SR_EOC;\n\n\t\t\/*Do something*\/\n\t\tadc_data=ADC1-&gt;DR;\n\t}\n\n}<\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">5. Results<\/h2>\n\n\n\n<p>After compile, upload, start a debug session and adding adcValue to watch window.<\/p>\n\n\n\n<p>Rotate the pot left and right and the value shall be updated without being called each time<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"242\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.36-AM-1024x242.png\" alt=\"\" class=\"wp-image-242\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.36-AM-1024x242.png 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.36-AM-300x71.png 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.36-AM-768x181.png 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.36-AM-1536x363.png 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.36-AM-2048x484.png 2048w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.36-AM-1150x272.png 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.36-AM-750x177.png 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.36-AM-400x94.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.36-AM-250x59.png 250w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"242\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.42-AM-1024x242.png\" alt=\"\" class=\"wp-image-243\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.42-AM-1024x242.png 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.42-AM-300x71.png 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.42-AM-768x181.png 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.42-AM-1536x363.png 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.42-AM-2048x484.png 2048w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.42-AM-1150x272.png 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.42-AM-750x177.png 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.42-AM-400x94.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2021\/08\/Screen-Shot-2021-07-26-at-10.57.42-AM-250x59.png 250w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>In the previous guide (here), We took a look for how the continuous conversion working in polling mode, in this guide, we shall use interrupt for to update the value in the interrupt handler rather than manually. In this guid will cover the following Difference between polling mode and interrupt mode Extra steps needed Schematic [&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-611","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\/611"}],"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=611"}],"version-history":[{"count":1,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=\/wp\/v2\/posts\/611\/revisions"}],"predecessor-version":[{"id":612,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=\/wp\/v2\/posts\/611\/revisions\/612"}],"wp:attachment":[{"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=611"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=611"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=611"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}