{"id":3761,"date":"2025-09-13T08:27:50","date_gmt":"2025-09-13T08:27:50","guid":{"rendered":"https:\/\/blog.embeddedexpert.io\/?p=3761"},"modified":"2025-09-13T08:27:52","modified_gmt":"2025-09-13T08:27:52","slug":"porting-u8g2-graphics-library-to-stm32-part4-st7920-gcld-128x64","status":"publish","type":"post","link":"https:\/\/blog.embeddedexpert.io\/?p=3761","title":{"rendered":"Porting U8G2 Graphics Library to STM32 Part4:\u00a0ST7920 GCLD 128&#215;64"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/ChatGPT-Image-Sep-13-2025-at-10_30_47-AM-1024x683.png\" alt=\"\" class=\"wp-image-3762\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/ChatGPT-Image-Sep-13-2025-at-10_30_47-AM-1024x683.png 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/ChatGPT-Image-Sep-13-2025-at-10_30_47-AM-300x200.png 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/ChatGPT-Image-Sep-13-2025-at-10_30_47-AM-768x512.png 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/ChatGPT-Image-Sep-13-2025-at-10_30_47-AM-1150x767.png 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/ChatGPT-Image-Sep-13-2025-at-10_30_47-AM-750x500.png 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/ChatGPT-Image-Sep-13-2025-at-10_30_47-AM-400x267.png 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/ChatGPT-Image-Sep-13-2025-at-10_30_47-AM-250x167.png 250w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/ChatGPT-Image-Sep-13-2025-at-10_30_47-AM.png 1536w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>This guide demonstrates how to interface a GLCD12864 display based on the ST7920 controller with an STM32 microcontroller using the U8G2 graphics library. We will cover hardware setup, library integration, and display initialization to build a solid foundation for graphical applications.<\/p>\n\n\n\n<p>In this guide, we shall cover the following:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Introduction.<\/li>\n\n\n\n<li>Connection.<\/li>\n\n\n\n<li>STM32CubeMX modification.<\/li>\n\n\n\n<li>Firmware modification.<\/li>\n\n\n\n<li>Results.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">1. Introduction:<\/h2>\n\n\n\n<p>This guide focuses on interfacing a&nbsp;<strong>GLCD 128&#215;64 display based on the ST7920 controller<\/strong>&nbsp;with an&nbsp;<strong>STM32 Nucleo development board<\/strong>&nbsp;using the&nbsp;<strong>U8G2 graphics library<\/strong>. The ST7920 is a versatile and widely used graphic LCD controller that supports both text and graphic modes, making it suitable for a variety of embedded applications such as control panels, data loggers, instrumentation displays, and custom user interfaces. On the other hand, the STM32 Nucleo series provides a powerful yet flexible platform for rapid prototyping with Arm Cortex-M microcontrollers, offering robust peripherals and wide community support.<\/p>\n\n\n\n<p>The U8G2 graphics library adds another powerful layer by providing a high-level and hardware-independent API for rendering fonts, bitmaps, and geometric shapes on monochrome displays. With its optimized drawing routines and extensive font support, U8G2 allows developers to build attractive and functional interfaces without needing to manage low-level display driver code.<\/p>\n\n\n\n<p>In this guide, we will cover the essential steps required to set up the hardware and software environment, configure the GLCD 128&#215;64 with the STM32 Nucleo, and leverage U8G2 to render text and graphics. By the end, you will have a clear understanding of how to integrate this display into your own embedded projects and extend its functionality further.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. Connection:<\/h2>\n\n\n\n<p>The connection as follows:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"732\" height=\"1024\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/Untitled-Sketch_bb-732x1024.jpg\" alt=\"\" class=\"wp-image-3763\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/Untitled-Sketch_bb-732x1024.jpg 732w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/Untitled-Sketch_bb-214x300.jpg 214w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/Untitled-Sketch_bb-768x1075.jpg 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/Untitled-Sketch_bb-1098x1536.jpg 1098w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/Untitled-Sketch_bb-1150x1609.jpg 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/Untitled-Sketch_bb-750x1049.jpg 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/Untitled-Sketch_bb-400x560.jpg 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/Untitled-Sketch_bb-250x350.jpg 250w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/Untitled-Sketch_bb.jpg 1323w\" sizes=\"(max-width: 732px) 100vw, 732px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>ST7920 GLCD<\/td><td>STM32F411 Nucleo<\/td><\/tr><tr><td>Vss<\/td><td>GND<\/td><\/tr><tr><td>Vdd<\/td><td>5V<\/td><\/tr><tr><td>Vo<\/td><td>Middle of Potentiometer<\/td><\/tr><tr><td>DI (CS)<\/td><td>PA0 (A0 of Arduino connector)<\/td><\/tr><tr><td>R\/W<\/td><td>MOSI (PA7) (Pin 11 of Arduino Connector)<\/td><\/tr><tr><td>E <\/td><td>SCK (PA5) (Pin 13 of Arduino Connector)<\/td><\/tr><tr><td>CS1<\/td><td>GND<\/td><\/tr><tr><td>RST<\/td><td>PA4 (A2 of Arduino connector)<\/td><\/tr><tr><td>A (LED+)<\/td><td>5V<\/td><\/tr><tr><td>K (LED-)<\/td><td>GND<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. STM32CubeMX Modification:<\/h2>\n\n\n\n<p>From the previous project, open u8g2.ioc file as follows:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"580\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/08\/2025-08-29_11-36-35-1024x580.jpg\" alt=\"\" class=\"wp-image-3726\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/08\/2025-08-29_11-36-35-1024x580.jpg 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/08\/2025-08-29_11-36-35-300x170.jpg 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/08\/2025-08-29_11-36-35-768x435.jpg 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/08\/2025-08-29_11-36-35-1536x871.jpg 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/08\/2025-08-29_11-36-35-1150x652.jpg 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/08\/2025-08-29_11-36-35-750x425.jpg 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/08\/2025-08-29_11-36-35-400x227.jpg 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/08\/2025-08-29_11-36-35-250x141.jpg 250w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/08\/2025-08-29_11-36-35.jpg 1884w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>STM32CubeMX window shall appears.<\/p>\n\n\n\n<p>Next, head to SPI1 in connectivity and reduce to baud rate to be less than 1MBps as follows:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"844\" height=\"1024\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-13_10-59-48-844x1024.jpg\" alt=\"\" class=\"wp-image-3764\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-13_10-59-48-844x1024.jpg 844w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-13_10-59-48-247x300.jpg 247w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-13_10-59-48-768x932.jpg 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-13_10-59-48-1266x1536.jpg 1266w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-13_10-59-48-1150x1396.jpg 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-13_10-59-48-750x910.jpg 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-13_10-59-48-400x485.jpg 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-13_10-59-48-250x303.jpg 250w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-13_10-59-48.jpg 1582w\" sizes=\"(max-width: 844px) 100vw, 844px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Next, set PA4 as GPIO Output and give a name of RST as follows:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"838\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-13_11-07-16-1024x838.jpg\" alt=\"\" class=\"wp-image-3765\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-13_11-07-16-1024x838.jpg 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-13_11-07-16-300x246.jpg 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-13_11-07-16-768x629.jpg 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-13_11-07-16-1536x1257.jpg 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-13_11-07-16-1150x941.jpg 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-13_11-07-16-750x614.jpg 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-13_11-07-16-400x327.jpg 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-13_11-07-16-250x205.jpg 250w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-13_11-07-16.jpg 1894w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Save the project and this will generate the code.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4. Firmware Modifications:<\/h2>\n\n\n\n<p>In <strong>uint8_t<\/strong> <strong>u8x8_gpio_and_delay<\/strong> function, add the following switch condition:<\/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;C&quot;,&quot;language&quot;:&quot;C&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;c&quot;}\">\t\tcase U8X8_MSG_GPIO_RESET:\n\t\t\tHAL_GPIO_WritePin(RST_GPIO_Port, RST_Pin, arg_int);\n\t\t\tbreak;<\/pre><\/div>\n\n\n\n<p>This will allow the library to reset the display using hardware reset.<\/p>\n\n\n\n<p>For ST7920, the CS pin is different from any other chip select for any SPI peripheral. From the datasheet we can find the following:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"316\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-13_11-12-33-1024x316.jpg\" alt=\"\" class=\"wp-image-3766\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-13_11-12-33-1024x316.jpg 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-13_11-12-33-300x92.jpg 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-13_11-12-33-768x237.jpg 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-13_11-12-33-1536x474.jpg 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-13_11-12-33-2048x631.jpg 2048w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-13_11-12-33-1150x355.jpg 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-13_11-12-33-750x231.jpg 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-13_11-12-33-400x123.jpg 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/2025-09-13_11-12-33-250x77.jpg 250w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>When CS pin is high, the ST7920 will accept the data and disabled when it is low.<\/p>\n\n\n\n<p>Hence, in <strong>u8x8_spi<\/strong> function:<\/p>\n\n\n\n<p>We need to switch the state of the CS pin as follows<\/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;C&quot;,&quot;language&quot;:&quot;C&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;c&quot;}\">\t\tcase U8X8_MSG_BYTE_START_TRANSFER:\n\t\t\tHAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_SET);\n\t\t\tbreak;\n\t\tcase U8X8_MSG_BYTE_END_TRANSFER:\n\t\t\tHAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_RESET);\n\t\t\tbreak;<\/pre><\/div>\n\n\n\n<p>This will ensure the proper method to handle the communication.<\/p>\n\n\n\n<p>In the user code begin 2 in the main function:<\/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;C&quot;,&quot;language&quot;:&quot;C&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;c&quot;}\">u8g2_Setup_st7920_s_128x64_f(&amp;myDisplay, U8G2_R0, u8x8_spi, u8x8_gpio_and_delay);<\/pre><\/div>\n\n\n\n<p>Since the display uses st7920 we need to use st7920 setup function. <\/p>\n\n\n\n<p>Next, draw a text and circle as follows:<\/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;C&quot;,&quot;language&quot;:&quot;C&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;c&quot;}\">  u8g2_ClearDisplay(&amp;myDisplay);\n  u8g2_SetFont(&amp;myDisplay, u8g2_font_ncenB14_tr);\n  u8g2_DrawStr(&amp;myDisplay, 0,15,&quot;Hello world&quot;);\n  u8g2_DrawCircle(&amp;myDisplay, 60, 30, 10, U8G2_DRAW_ALL);\n  u8g2_SendBuffer(&amp;myDisplay);<\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<p>Thats all for the firmware. Save the project and run it on your MCU as follows:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"34\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/07\/2025-07-03_17-48-35-1024x34.jpg\" alt=\"\" class=\"wp-image-3598\" srcset=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/07\/2025-07-03_17-48-35-1024x34.jpg 1024w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/07\/2025-07-03_17-48-35-300x10.jpg 300w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/07\/2025-07-03_17-48-35-768x25.jpg 768w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/07\/2025-07-03_17-48-35-1536x51.jpg 1536w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/07\/2025-07-03_17-48-35-2048x68.jpg 2048w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/07\/2025-07-03_17-48-35-1150x38.jpg 1150w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/07\/2025-07-03_17-48-35-750x25.jpg 750w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/07\/2025-07-03_17-48-35-400x13.jpg 400w, https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/07\/2025-07-03_17-48-35-250x8.jpg 250w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">5. Results:<\/h2>\n\n\n\n<p><\/p>\n\n\n\n<p>You should get the following:<\/p>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/blog.embeddedexpert.io\/wp-content\/uploads\/2025\/09\/IMG_8031.heic\" alt=\"\" class=\"wp-image-3767\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Happy coding \ud83d\ude09<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This guide demonstrates how to interface a GLCD12864 display based on the ST7920 controller with an STM32 microcontroller using the U8G2 graphics library. We will cover hardware setup, library integration, and display initialization to build a solid foundation for graphical applications. In this guide, we shall cover the following: 1. Introduction: This guide focuses on [&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,19,11,12],"tags":[],"class_list":["post-3761","post","type-post","status-publish","format-standard","hentry","category-embedded-systems","category-lcd","category-peripheral-drivers","category-stm32"],"_links":{"self":[{"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=\/wp\/v2\/posts\/3761"}],"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=3761"}],"version-history":[{"count":1,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=\/wp\/v2\/posts\/3761\/revisions"}],"predecessor-version":[{"id":3768,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=\/wp\/v2\/posts\/3761\/revisions\/3768"}],"wp:attachment":[{"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3761"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3761"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.embeddedexpert.io\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3761"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}