{"id":2447,"date":"2024-08-09T11:51:23","date_gmt":"2024-08-09T11:51:23","guid":{"rendered":"https:\/\/iotthinghub.com\/?p=2447"},"modified":"2024-08-12T13:03:37","modified_gmt":"2024-08-12T13:03:37","slug":"arm-cortex-st-microcontroller","status":"publish","type":"post","link":"https:\/\/iotthinghub.com\/?p=2447","title":{"rendered":"Arm\u00ae Cortex\u00ae ST Microcontroller"},"content":{"rendered":"\n<p class=\"has-text-color has-link-color wp-elements-b7d7e63be1b2d42e04105b140be50015 wp-block-paragraph\" style=\"color:#5c5c5c\">ARM stands for Advanced RISC Machines. ARM is a family of RISC instruction set architectures (ISAs) for computer processors. Due to their low costs, low power consumption, and low heat generation, ARM processors are useful for light, portable, battery-powered devices, including Smartphone\u2019s, laptops, and tablet computers, as well as embedded systems. However, ARM processors are also used for desktops and servers, including the world&#8217;s fastest supercomputer (Fugaku) from 2020 to 2022. ARM is the most widely used family of instruction set architectures. We learn about the STM32 arm processor released by STMicroelectronics. The STM32 is a family of microcontroller ICs based on various 32-bit RISC ARM Cortex-M cores. The STM32 medium-density performance line family incorporates the high-performance Arm\u00ae Cortex\u00ae-M3 32-bit RISC core operating at a 24 to 480 MHz frequency, high-speed embedded memories, and an extensive range of enhanced I\/Os and peripherals connected to APB buses. All devices offer two 12-bit ADCs, RTC(Real time clock), IRTM(Infrared Interface), IWDG( Independent Watchdog), WWDG( System Window Watchdog), general purpose 16-bit timers, PWM timer, as well as standard and advanced communication interfaces:I2Cs and SPIs, USARTs, USB, CAN, Touch Sensor etc. There are many IDE( Integrated Development Environments) for programming STM32 microcontroller some are-<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img fetchpriority=\"high\" decoding=\"async\" width=\"462\" height=\"132\" src=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/2024\/08\/function-1.jpg\" alt=\"\" class=\"wp-image-2463\" style=\"width:207px;height:auto\" srcset=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/2024\/08\/function-1.jpg 462w, https:\/\/iotthinghub.com\/wp-content\/uploads\/2024\/08\/function-1-300x86.jpg 300w\" sizes=\"(max-width: 462px) 100vw, 462px\" \/><\/figure>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-text-color has-link-color wp-elements-26729594d4e9f5657abed8c35391ead8 wp-block-paragraph\" style=\"color:#5c5c5c\">Let\u2019s look at the internal structure of a STM32F103xx<\/p>\n\n\n\n<p class=\"has-text-align-left has-text-color has-link-color wp-elements-119a0e3dd690baa1b4771276e73ef2ee wp-block-paragraph\" style=\"color:#5c5c5c\">Unlike in AVR the clock section we only have one clock to operate all peripherals i.e. GPIO, SPI, URAT etc, but in STM32 the different clock perform different function. For example GPIO, Timer1, SPI1 operate on APB2 clock and Timer2, SPI2 operate on APB1 clock source, RTC works on internal 40kHz or external clock. So clock configuration is a very important function in STM32.One very interesting fact that in AVR tutorials we learn to create the basic controlling function create by our own bit setting but in STM32 IDE\u2019s there are build in feature and function. We just have to operate the function in proper order. We configure our peripherals in STM32CubeMX and develop the main program in either EWARM\/Keil\/STMcube.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img decoding=\"async\" width=\"652\" height=\"703\" src=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/2024\/08\/Cortex-M3.jpg\" alt=\"\" class=\"wp-image-2465\" style=\"width:372px;height:auto\" srcset=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/2024\/08\/Cortex-M3.jpg 652w, https:\/\/iotthinghub.com\/wp-content\/uploads\/2024\/08\/Cortex-M3-278x300.jpg 278w\" sizes=\"(max-width: 652px) 100vw, 652px\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-6b2b10c588885dd8b0cefd578915a2b0 wp-block-paragraph\" style=\"color:#5c5c5c\"><\/p>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-233b7b011637dd5d3ae09b82ec0b292a wp-block-paragraph\" style=\"color:#5c5c5c\">GPIO: Each I\/O port bit is freely programmable. The general-purpose I\/O (GPIO) ports can be individually configured by software in several modes:<\/p>\n\n\n\n<ul style=\"color:#5c5c5c\" class=\"wp-block-list has-text-color has-link-color wp-elements-93c4cee565abf2d0a2540a038af8a54e\">\n<li>Input floating : Default configuration in input setting<\/li>\n\n\n\n<li>Input pull-up: In input mode the GPIO pin can be configure as pull-up. So the default pin value is 1 and pin works on 0 or GND.<\/li>\n\n\n\n<li>Input-pull-down: In input mode the GPIO pin can be configure as pull-down. So the default pin value is 0 and pin works on 1 or VCC.<\/li>\n\n\n\n<li>Analog<\/li>\n\n\n\n<li>Output open-drain\/ push-pull with pull-up or pull-down capability<\/li>\n\n\n\n<li>Alternate function open-drain\/push-pull with pull-up or pull-down capability<\/li>\n<\/ul>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-ce8949e2d737319c40c5552c247648d5 wp-block-paragraph\" style=\"color:#5c5c5c\">In output mode the GPIO pin speed can be configure as Low speed\/Medium speed\/High speed. We configure the GPIO in HAL library generated by STM32CubeMX. All libraries are already built in HAL library; we have to just use it in different section. HAL library for GPIO are-<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; auto-links: false; title: ; quick-code: false; notranslate\" title=\"\">\nHAL_GPIO_ReadPin(GPIOx, GPIO_Pin) -&gt; Read Input Status\nHAL_GPIO_WritePin(GPIOx, GPIO_Pin, PinState) -&gt; Set high or low\nHAL_GPIO_TogglePin(GPIOx, GPIO_Pin) -&gt; Toggle the Output pin\nHAL_GPIO_LockPin(GPIOx, GPIO_Pin) -&gt; Lock the Pin\n<\/pre><\/div>\n\n\n<p class=\"has-text-color has-link-color wp-elements-967b0262438622ac2f0bece23470a0fe wp-block-paragraph\" style=\"color:#5c5c5c\">Here &gt; x can be (A..F), GPIO_PIN_x &gt; x is number<\/p>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-9b03598acdffb09ae936574f1a4428c0 wp-block-paragraph\" style=\"color:#5c5c5c\">PinState: GPIO_PIN_SET or 1 &amp; GPIO_PIN_RESET or 0.<\/p>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-f3d702ee3e1de14dd055824fe940e560 wp-block-paragraph\" style=\"color:#5c5c5c\">Each GPIO pin can be configured as External Interrupt Request.&nbsp;<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; auto-links: false; title: ; quick-code: false; notranslate\" title=\"\">\nHAL_GPIO_EXTI_IRQHandler(uint16_t  GPIO_Pin) or void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)\n<\/pre><\/div>\n\n\n<p class=\"has-text-color has-link-color wp-elements-af72c6f8b72455c772798b7acff9b9c1 wp-block-paragraph\" style=\"color:#5c5c5c\">Let\u2019s first build our main program with toggle a pin according the input sate of a pin. We also show in debug section how many times the switch has been pressed.<\/p>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-2e81f27b4f9dbe778b81dcbc63b2705e wp-block-paragraph\" style=\"color:#5c5c5c\">The debug extensions allow the core to be stopped either on a given instruction fetch (breakpoint) or data access (watch point). When stopped, the core\u2019s internal state and the system\u2019s external state may be examined. Once examination is complete, the core and the system may be restored and program execution resumed. Please follow the video part for our first program with STM32 microcontroller. In this example we use STM32F0308-DISCO board.<\/p>\n\n\n\n<p class=\"has-text-color has-link-color has-medium-font-size wp-elements-4abdb9f61ecf69900a099b92dde71535 wp-block-paragraph\" style=\"color:#6c8a97\">Functions: Configure PA0 pin as input with pull-down and PC8 as output pin.<\/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 title=\"STM32 Introduction\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/BYUyv8ac70U?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<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; auto-links: false; title: ; quick-code: false; notranslate\" title=\"\">\nuint8_t press;\nif(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0))\n\t\t{\n\t\t HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_8);\n\t\t\tHAL_Delay(200);\/\/200ms delay\n\t\t\tpress++;\n\t\t}\n<\/pre><\/div>\n\n\n<p class=\"has-text-color has-link-color wp-elements-fc7f4299a926179c4eeda67495e33945 wp-block-paragraph\" style=\"color:#5c5c5c\">Here we introduce a function HAL_Delay(value);-&gt; delay function in milliseconds. For microseconds delay we need timer in that case, there is no inbuilt delay function for microseconds. For the basic of Timer, ADC, SPI, I2C &amp; UART please go through all the section describe in Atmel part. In Arm section we will cover the entire topic in different examples\/interface.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-3e41869c wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/2024\/08\/Debug_Check_STM32F0308.rar\" style=\"padding-top:var(--wp--preset--spacing--30);padding-right:var(--wp--preset--spacing--50);padding-bottom:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--50)\">download<\/a><\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<p class=\"has-text-color has-link-color has-medium-font-size wp-elements-8745138ebc11e813869a642a9176b5c9 wp-block-paragraph\" style=\"color:#252525\"><a href=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/2024\/08\/Debug_Check_STM32F0308.rar\">GPIO &amp; Debug Check (Keil)<\/a><\/p>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In this example Keil generate a .hex file Project Name&gt;MDK-ARM&gt;Project Name .hex as same as in Atmel Part. We have to load the flash either in-<\/p>\n\n\n\n<ul style=\"color:#6c8a97\" class=\"wp-block-list has-text-color has-link-color has-medium-font-size wp-elements-e79ad643ed61981e770a43422b0cc29c\">\n<li>STM32 ST-LINK Utility or Keil<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img decoding=\"async\" width=\"906\" height=\"284\" src=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/2024\/08\/ST-LINK.jpg\" alt=\"\" class=\"wp-image-2496\" style=\"width:670px;height:auto\" srcset=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/2024\/08\/ST-LINK.jpg 906w, https:\/\/iotthinghub.com\/wp-content\/uploads\/2024\/08\/ST-LINK-300x94.jpg 300w, https:\/\/iotthinghub.com\/wp-content\/uploads\/2024\/08\/ST-LINK-768x241.jpg 768w\" sizes=\"(max-width: 906px) 100vw, 906px\" \/><\/figure>\n\n\n<style type=\"text\/css\">\n#foogallery-gallery-2485 .fg-image { width: 200px; }<\/style>\n\t\t\t<div class=\"foogallery foogallery-container foogallery-carousel foogallery-lightbox-foogallery fg-carousel fg-ready fg-light fg-border-thin fg-shadow-outline fg-loading-default fg-loaded-fade-in fg-caption-hover fg-hover-fade fg-hover-zoom\" id=\"foogallery-gallery-2485\" data-foogallery=\"{&quot;item&quot;:{&quot;showCaptionTitle&quot;:true,&quot;showCaptionDescription&quot;:true},&quot;lazy&quot;:true,&quot;template&quot;:{&quot;maxItems&quot;:5,&quot;scale&quot;:0.11999999999999999555910790149937383830547332763671875,&quot;gutter&quot;:{&quot;min&quot;:-40,&quot;max&quot;:-20,&quot;unit&quot;:&quot;%&quot;},&quot;autoplay&quot;:{&quot;time&quot;:3,&quot;interaction&quot;:&quot;pause&quot;},&quot;centerOnClick&quot;:true,&quot;align&quot;:&quot;center&quot;,&quot;activePosition&quot;:&quot;center&quot;}}\" data-foogallery-lightbox=\"{&quot;thumbs&quot;:&quot;bottom&quot;,&quot;thumbsCaptions&quot;:false,&quot;thumbsBestFit&quot;:false,&quot;thumbsSmall&quot;:false,&quot;thumbsCaptionsAlign&quot;:&quot;default&quot;,&quot;info&quot;:&quot;bottom&quot;,&quot;infoVisible&quot;:true,&quot;infoOverlay&quot;:true,&quot;infoAlign&quot;:&quot;default&quot;,&quot;transition&quot;:&quot;fade&quot;,&quot;hoverButtons&quot;:false,&quot;fitMedia&quot;:false,&quot;noScrollbars&quot;:true,&quot;preserveButtonSpace&quot;:true,&quot;buttons&quot;:{&quot;fullscreen&quot;:true,&quot;info&quot;:true,&quot;thumbs&quot;:false},&quot;video&quot;:{&quot;autoPlay&quot;:true}}\" style=\"--fg-title-line-clamp: 0; --fg-description-line-clamp: 0;\" >\n\t<button type=\"button\" class=\"fg-carousel-prev\" title=\"Previous\"><\/button>\n\t<div class=\"fg-carousel-inner\">\n\t\t<div class=\"fg-carousel-center\"><\/div>\n\t\t<div class=\"fg-item fg-type-image fg-idle\"><figure class=\"fg-item-inner\"><a href=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/2024\/08\/Connect-Devices.jpg\" data-attachment-id=\"2486\" data-type=\"image\" class=\"fg-thumb\"><span class=\"fg-image-wrap\"><img decoding=\"async\" width=\"200\" height=\"200\" class=\"skip-lazy fg-image\" data-src-fg=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/cache\/2024\/08\/Connect-Devices\/2326764651.jpg\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22200%22%20height%3D%22200%22%20viewBox%3D%220%200%20200%20200%22%3E%3C%2Fsvg%3E\" loading=\"eager\"><\/span><span class=\"fg-image-overlay\"><\/span><\/a><\/figure><div class=\"fg-loader\"><\/div><\/div><div class=\"fg-item fg-type-image fg-idle\"><figure class=\"fg-item-inner\"><a href=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/2024\/08\/ST-Link-Setup.jpg\" data-attachment-id=\"2492\" data-type=\"image\" class=\"fg-thumb\"><span class=\"fg-image-wrap\"><img decoding=\"async\" width=\"200\" height=\"200\" class=\"skip-lazy fg-image\" data-src-fg=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/cache\/2024\/08\/ST-Link-Setup\/2284651850.jpg\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22200%22%20height%3D%22200%22%20viewBox%3D%220%200%20200%20200%22%3E%3C%2Fsvg%3E\" loading=\"eager\"><\/span><span class=\"fg-image-overlay\"><\/span><\/a><\/figure><div class=\"fg-loader\"><\/div><\/div><div class=\"fg-item fg-type-image fg-idle\"><figure class=\"fg-item-inner\"><a href=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/2024\/08\/Connection-Done.jpg\" data-attachment-id=\"2487\" data-type=\"image\" class=\"fg-thumb\"><span class=\"fg-image-wrap\"><img decoding=\"async\" width=\"200\" height=\"200\" class=\"skip-lazy fg-image\" data-src-fg=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/cache\/2024\/08\/Connection-Done\/3745849920.jpg\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22200%22%20height%3D%22200%22%20viewBox%3D%220%200%20200%20200%22%3E%3C%2Fsvg%3E\" loading=\"eager\"><\/span><span class=\"fg-image-overlay\"><\/span><\/a><\/figure><div class=\"fg-loader\"><\/div><\/div><div class=\"fg-item fg-type-image fg-idle\"><figure class=\"fg-item-inner\"><a href=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/2024\/08\/Hex-File.jpg\" data-attachment-id=\"2489\" data-type=\"image\" class=\"fg-thumb\"><span class=\"fg-image-wrap\"><img decoding=\"async\" width=\"200\" height=\"200\" class=\"skip-lazy fg-image\" data-src-fg=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/cache\/2024\/08\/Hex-File\/279147793.jpg\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22200%22%20height%3D%22200%22%20viewBox%3D%220%200%20200%20200%22%3E%3C%2Fsvg%3E\" loading=\"eager\"><\/span><span class=\"fg-image-overlay\"><\/span><\/a><\/figure><div class=\"fg-loader\"><\/div><\/div><div class=\"fg-item fg-type-image fg-idle\"><figure class=\"fg-item-inner\"><a href=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/2024\/08\/Verify.jpg\" data-attachment-id=\"2493\" data-type=\"image\" class=\"fg-thumb\"><span class=\"fg-image-wrap\"><img decoding=\"async\" width=\"200\" height=\"200\" class=\"skip-lazy fg-image\" data-src-fg=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/cache\/2024\/08\/Verify\/1698600542.jpg\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22200%22%20height%3D%22200%22%20viewBox%3D%220%200%20200%20200%22%3E%3C%2Fsvg%3E\" loading=\"eager\"><\/span><span class=\"fg-image-overlay\"><\/span><\/a><\/figure><div class=\"fg-loader\"><\/div><\/div><div class=\"fg-item fg-type-image fg-idle\"><figure class=\"fg-item-inner\"><a href=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/2024\/08\/Program-done.jpg\" data-attachment-id=\"2491\" data-type=\"image\" class=\"fg-thumb\"><span class=\"fg-image-wrap\"><img decoding=\"async\" width=\"200\" height=\"200\" class=\"skip-lazy fg-image\" data-src-fg=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/cache\/2024\/08\/Program-done\/1723313052.jpg\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22200%22%20height%3D%22200%22%20viewBox%3D%220%200%20200%20200%22%3E%3C%2Fsvg%3E\" loading=\"eager\"><\/span><span class=\"fg-image-overlay\"><\/span><\/a><\/figure><div class=\"fg-loader\"><\/div><\/div>\t<\/div>\n\t<div class=\"fg-carousel-bottom\"><\/div>\n\t<div class=\"fg-carousel-progress\"><\/div>\n\t<button type=\"button\" class=\"fg-carousel-next\" title=\"Next\"><\/button>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>ARM stands for Advanced RISC Machines. ARM is a family of RISC instruction set architectures (ISAs) for computer processors. Due to their low costs, low power consumption, and low heat generation, ARM processors are useful for light, portable, battery-powered devices, including Smartphone\u2019s, laptops, and tablet computers, as well as embedded systems. However, ARM processors are [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[21],"tags":[],"class_list":["post-2447","post","type-post","status-publish","format-standard","hentry","category-arm-standards-peripherals"],"_links":{"self":[{"href":"https:\/\/iotthinghub.com\/index.php?rest_route=\/wp\/v2\/posts\/2447","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/iotthinghub.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/iotthinghub.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/iotthinghub.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/iotthinghub.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2447"}],"version-history":[{"count":18,"href":"https:\/\/iotthinghub.com\/index.php?rest_route=\/wp\/v2\/posts\/2447\/revisions"}],"predecessor-version":[{"id":2669,"href":"https:\/\/iotthinghub.com\/index.php?rest_route=\/wp\/v2\/posts\/2447\/revisions\/2669"}],"wp:attachment":[{"href":"https:\/\/iotthinghub.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2447"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/iotthinghub.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2447"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/iotthinghub.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2447"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}