{"id":14346,"date":"2023-04-14T10:45:15","date_gmt":"2023-04-14T05:15:15","guid":{"rendered":"https:\/\/fastbitlab.com\/?p=14346"},"modified":"2023-09-07T12:33:46","modified_gmt":"2023-09-07T07:03:46","slug":"vibgyor-bars-display-stm32f429idiscovery","status":"publish","type":"post","link":"https:\/\/fastbitlab.com\/blog\/vibgyor-bars-display-stm32f429idiscovery\/","title":{"rendered":"STM32-LTDC, LCD-TFT, LVGL (MCU3) Lecture 15| Exercise-001 : Displaying VIGBYOR bars on the display"},"content":{"rendered":"<div class=\"boldgrid-section\" style=\"background-image: linear-gradient(to left, #eeeeee, #eeeeee);\" data-bg-color-1=\"#EEEEEE\" data-bg-color-2=\"#EEEEEE\" data-bg-direction=\"to left\">\n<div class=\"container\">\n<div class=\"row\" style=\"padding-top: 35px; padding-bottom: 0px; background-image: linear-gradient(to left, #eeeeee, #eeeeee);\" data-bg-color-1=\"#EEEEEE\" data-bg-color-2=\"#EEEEEE\" data-bg-direction=\"to left\">\n<div class=\"col-md-1 col-sm-12 col-xs-12 col-lg-1\">\n<div class=\"boldgrid-shortcode\" data-imhwpb-draggable=\"true\">\n\n<\/div>\n<p class=\"\">&nbsp;<\/p>\n<\/div>\n<div class=\"col-md-10 col-sm-12 col-xs-12 col-lg-10\">\n<h1 class=\"\" style=\"text-align: center; font-size: 35px; border-width: 0px; line-height: 50px; font-family: 'Roboto Slab'; font-weight: 400;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><strong><span style=\"color: #000080;\">Displaying VIGBYOR bars on the display<\/span><\/strong><\/h1>\n<div class=\"row bg-editor-hr-wrap\" style=\"border-width: 0px; margin-top: 0px;\">\n<div class=\"col-lg-12 col-md-12 col-xs-12 col-sm-12\">\n<div>\n<div class=\"bg-hr bg-hr-10 color2-color\" style=\"border-style: solid; border-width: 0px 0px 3px;\"><\/div>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 25px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"color: #ff0000;\"><strong><span style=\"text-decoration: underline;\">Exercise:<\/span> <span style=\"color: #800080;\">Display VIBGYOR color bars<\/span><\/strong><\/span><\/p>\n<figure id=\"attachment_14349\" aria-describedby=\"caption-attachment-14349\" style=\"width: 635px\" class=\"wp-caption aligncenter\"><img fetchpriority=\"high\" decoding=\"async\" class=\"wp-image-14349 \" src=\"https:\/\/fastbitlab.com\/wp-content\/uploads\/2023\/04\/Figure-1-5.png\" alt=\"Figure 1. VIBGYOR bars and RGB value\" width=\"635\" height=\"262\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-1-5.png 1835w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-1-5-300x124.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-1-5-1024x422.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-1-5-768x317.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-1-5-600x248.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-1-5-1536x634.png 1536w\" sizes=\"(max-width: 635px) 100vw, 635px\" \/><figcaption id=\"caption-attachment-14349\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 1. VIBGYOR bars and RGB value<\/span><\/figcaption><\/figure>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">Here we code from scratch. We will not be using the STM32Cube code auto-generation feature, and for later exercises, we can use the code auto-generation feature. But for this exercise at least we will code everything from scratch and when we code everything from scratch, we will learn a lot of concepts and we can debug our projects better. And we&#8217;ll also learn a lot of internal things about the peripherals and how things are working. <\/span><\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">Here we are using the STM32F429IDISCOVERY board for this exercise.<\/span><\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 20px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"text-decoration: underline; color: #000080;\"><b>Steps<\/b><\/span><\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">1. Create a new project for your microcontroller or board using <a href=\"https:\/\/www.st.com\/en\/development-tools\/stm32cubeide.html\">STM32CubeIDE<\/a><\/span><\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">2. Setup the main system clock&nbsp;<\/span><\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">3. Setup AHB and APB clocks<\/span><\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"color: #000000;\"><span style=\"font-weight: 400;\">4. Setup the pixel clock(DOTCLK)<\/span><span style=\"font-weight: 400;\">(<span style=\"color: #ff0000;\">Not required for STM32F407x-DISC1 board with external LCD<\/span>)&nbsp;<\/span><\/span><\/p>\n<p class=\"\" style=\"padding-left: 40px; border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">Because the DOTCLK or pixel clock is part of the RGB interface. So, we are not using the RGB interface for this combination. That&#8217;s why this step is not required.<\/span><\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"color: #000000;\"><span style=\"font-weight: 400;\">5. Configure the SPI peripheral.<\/span><span style=\"font-weight: 400;\">(<span style=\"color: #ff0000;\">Not required for STM32F746-DISC board<\/span>)<\/span><\/span><\/p>\n<p class=\"\" style=\"padding-left: 40px; border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">Because, we are not going to initialize the LCD module, which is there on the STM32F746-DISC board. So, no initialization is required for that LCD module.<\/span><\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">6. Setup the framebuffer in RAM<\/span><\/p>\n<p class=\"\" style=\"padding-left: 40px; border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">This is a place where you manipulate the frame buffer with VIBGYOR colors.&nbsp;&nbsp;<\/span><\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"color: #000000;\"><span style=\"font-weight: 400;\">7. Initialize the LCD module by sending LCD commands over SPI<\/span><span style=\"font-weight: 400;\">(<span style=\"color: #ff0000;\">Not required for STM32F746-DISC board<\/span>)<\/span><\/span><\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"color: #000000;\"><span style=\"font-weight: 400;\">8. Configure and enable the LTDC peripheral<\/span><span style=\"font-weight: 400;\">(<span style=\"color: #ff0000;\">Not required for STM32F407x-DISC1)<\/span><\/span><\/span><\/p>\n<p class=\"\" style=\"padding-left: 40px; border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">Because we are using the DBI interface for this board. That&#8217;s why we are not using LTDC here. So, this step is not required for this board.<\/span><\/p>\n<p class=\"\" style=\"padding-left: 40px; border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400;\"><span style=\"color: #000000;\">Once you configure and enable the LTDC peripheral, the LTDC will generate all the synchronizati<\/span>on signals, timing signals, and data signals, and you should start seeing the output on the display.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400;\">9. Send frame buffer contents to LCD over SPI <\/span><span style=\"font-weight: 400;\">(<span style=\"color: #ff0000;\">Only in the case of STM32F407x-DISC1<\/span>)<\/span><\/p>\n<p class=\"\" style=\"padding-left: 40px; border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">Basically, you have to write one SPI transmit function where you have to send the frame buffer contents using your code.&nbsp;<\/span><\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">10. Make sure that all error interrupts are enabled and ISRs implemented<\/span><\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">So that we can trap the code if something goes wrong.<\/span><\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 20px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"text-decoration: underline; color: #000080;\"><strong>Create a new project for your microcontroller or board using STM32CubeIDE<\/strong><\/span><\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400;\">First open STM32CubeIDE.&nbsp;<\/span><\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400;\">It shows STM32CubeIDE Launcher. Here you select a directory as a workspace. Just <span style=\"color: #800080;\"><strong>browse<\/strong><\/span> the folder path where your project should store, or copy and paste the path here, and then click <span style=\"color: #800080;\"><strong>Launch<\/strong><\/span>.<\/span><\/p>\n<figure id=\"attachment_14350\" aria-describedby=\"caption-attachment-14350\" style=\"width: 598px\" class=\"wp-caption aligncenter\"><img decoding=\"async\" class=\"wp-image-14350 \" src=\"https:\/\/fastbitlab.com\/wp-content\/uploads\/2023\/04\/Figure-2-6.png\" alt=\"Figure 2. STM32CubeIDE Launcher\" width=\"598\" height=\"266\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-2-6.png 1619w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-2-6-300x133.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-2-6-1024x455.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-2-6-768x341.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-2-6-600x266.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-2-6-1536x682.png 1536w\" sizes=\"(max-width: 598px) 100vw, 598px\" \/><figcaption id=\"caption-attachment-14350\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 2. STM32CubeIDE Launcher<\/span><\/figcaption><\/figure>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">Now let&#8217;s create a new project.<\/span><\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">From the menu bar, select <span style=\"color: #800080;\"><strong>File<\/strong><\/span> -&gt; <span style=\"color: #800080;\"><strong>New<\/strong><\/span> -&gt; <span style=\"color: #800080;\"><strong>STM32 Project<\/strong><\/span>, as shown in Figure 3.<\/span><\/p>\n<figure id=\"attachment_14351\" aria-describedby=\"caption-attachment-14351\" style=\"width: 633px\" class=\"wp-caption aligncenter\"><img decoding=\"async\" class=\"wp-image-14351 \" src=\"https:\/\/fastbitlab.com\/wp-content\/uploads\/2023\/04\/Figure-3-4.png\" alt=\"Figure 3. Creating a STM32 project\" width=\"633\" height=\"350\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-3-4.png 1387w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-3-4-300x166.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-3-4-1024x566.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-3-4-768x425.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-3-4-600x332.png 600w\" sizes=\"(max-width: 633px) 100vw, 633px\" \/><figcaption id=\"caption-attachment-14351\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 3. Creating a STM32 project<\/span><\/figcaption><\/figure>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">Then, click on the <span style=\"color: #800080;\"><strong>Board selector<\/strong><\/span>, and type or select your board name. Here mine is the STM32F429 Discovery board. I selected that board. And click <span style=\"color: #800080;\"><strong>Next<\/strong><\/span>.<\/span><\/p>\n<figure id=\"attachment_14352\" aria-describedby=\"caption-attachment-14352\" style=\"width: 661px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14352 \" src=\"https:\/\/fastbitlab.com\/wp-content\/uploads\/2023\/04\/Figure-4-4.png\" alt=\"Figure 4. Target Selection\" width=\"661\" height=\"388\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-4-4.png 1799w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-4-4-300x176.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-4-4-1024x602.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-4-4-768x451.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-4-4-600x353.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-4-4-1536x902.png 1536w\" sizes=\"(max-width: 661px) 100vw, 661px\" \/><figcaption id=\"caption-attachment-14352\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 4. Target Selection<\/span><\/figcaption><\/figure>\n<p class=\"\">&nbsp;<\/p>\n<figure id=\"attachment_14353\" aria-describedby=\"caption-attachment-14353\" style=\"width: 687px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14353 \" src=\"https:\/\/fastbitlab.com\/wp-content\/uploads\/2023\/04\/Figure-5-2.png\" alt=\"Figure 5. Setup STM32 project\" width=\"687\" height=\"414\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-5-2.png 1403w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-5-2-300x181.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-5-2-1024x617.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-5-2-768x463.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-5-2-600x361.png 600w\" sizes=\"(max-width: 687px) 100vw, 687px\" \/><figcaption id=\"caption-attachment-14353\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 5. Setup STM32 project<\/span><\/figcaption><\/figure>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">Here give your project name, and targeted language select <span style=\"color: #800080;\"><strong>C<\/strong><\/span>,&nbsp; targeted Binary type select <span style=\"color: #800080;\"><strong>Executable<\/strong><\/span>, and targeted project type select <span style=\"color: #800080;\"><strong>Empty<\/strong><\/span>. Because we are not using STM32Cube code auto-generation. And then click <span style=\"color: #800080;\"><strong>Finish<\/strong><\/span>.<\/span><\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400;\">This project creation adds some minimal files like the main.c, which doesn&#8217;t have any code, so it just contains the main function. <\/span><\/p>\n<figure id=\"attachment_14354\" aria-describedby=\"caption-attachment-14354\" style=\"width: 658px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14354\" src=\"https:\/\/fastbitlab.com\/wp-content\/uploads\/2023\/04\/Figure-6-3.png\" alt=\"Displaying VIGBYOR bars on the display\" width=\"658\" height=\"308\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-6-3.png 1827w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-6-3-300x140.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-6-3-1024x479.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-6-3-768x359.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-6-3-600x281.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-6-3-1536x719.png 1536w\" sizes=\"(max-width: 658px) 100vw, 658px\" \/><figcaption id=\"caption-attachment-14354\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 6. main.c<\/span><\/figcaption><\/figure>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">And it adds two important files here(Figure 7).&nbsp; A&nbsp; &#8216;<strong><span style=\"color: #800080;\">startup<\/span><\/strong>&#8216; file and some &#8216;<span style=\"color: #800080;\"><strong>linker script<\/strong><\/span>&#8216;.&nbsp;<\/span><\/p>\n<figure id=\"attachment_14355\" aria-describedby=\"caption-attachment-14355\" style=\"width: 619px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14355\" src=\"https:\/\/fastbitlab.com\/wp-content\/uploads\/2023\/04\/Figure-7-2.png\" alt=\"Displaying VIGBYOR bars on the display\" width=\"619\" height=\"308\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-7-2.png 1775w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-7-2-300x149.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-7-2-1024x509.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-7-2-768x382.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-7-2-600x298.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-7-2-1536x764.png 1536w\" sizes=\"(max-width: 619px) 100vw, 619px\" \/><figcaption id=\"caption-attachment-14355\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 7. Startup files<\/span><\/figcaption><\/figure>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400;\">That&#8217;s how you create a new project.<\/span><\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">When you build this project, it says that &#8220;the FPU is not initialized, but the project is compiling for an FPU&#8221;, as shown in Figure 8.&nbsp;<\/span><\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">Basically, what IDE is saying is, the project uses hardware floating point, but it is not initialized in the code.&nbsp; So, it may generate some faults.<\/span><\/p>\n<figure id=\"attachment_14356\" aria-describedby=\"caption-attachment-14356\" style=\"width: 597px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14356\" src=\"https:\/\/fastbitlab.com\/wp-content\/uploads\/2023\/04\/Figure-8-1.png\" alt=\"Displaying VIGBYOR bars on the display\" width=\"597\" height=\"316\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-8-1.png 1822w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-8-1-300x159.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-8-1-1024x542.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-8-1-768x406.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-8-1-600x317.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-8-1-1536x813.png 1536w\" sizes=\"(max-width: 597px) 100vw, 597px\" \/><figcaption id=\"caption-attachment-14356\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 8. Warning<\/span><\/figcaption><\/figure>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400;\">For a time being,&nbsp; I will go to the settings of the project. Go to Build &gt; Settings &gt; MCU settings&gt; and here in the Floating-point unit it is selected as&nbsp; Hardware implementation. So, if you use the hardware implementation, then you have to initialize it, but that is not done in the code. So, we will use Floating point ABI as a&nbsp; Software implementation. Then click <span style=\"color: #800080;\"><strong>Apply<\/strong><\/span>, and <strong><span style=\"color: #800080;\">Apply and Close<\/span><\/strong>, as shown in Figure 9.<\/span><\/p>\n<figure id=\"attachment_14357\" aria-describedby=\"caption-attachment-14357\" style=\"width: 680px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14357\" src=\"https:\/\/fastbitlab.com\/wp-content\/uploads\/2023\/04\/Figure-9-1.png\" alt=\"Displaying VIGBYOR bars on the display\" width=\"680\" height=\"366\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-9-1.png 1833w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-9-1-300x162.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-9-1-1024x551.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-9-1-768x414.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-9-1-600x323.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-9-1-1536x827.png 1536w\" sizes=\"(max-width: 680px) 100vw, 680px\" \/><figcaption id=\"caption-attachment-14357\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 9. Project properties<\/span><\/figcaption><\/figure>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400;\">After building this project, that warning disappeared.<\/span><\/p>\n<figure id=\"attachment_14358\" aria-describedby=\"caption-attachment-14358\" style=\"width: 726px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14358\" src=\"https:\/\/fastbitlab.com\/wp-content\/uploads\/2023\/04\/Figure-10.png\" alt=\"Displaying VIGBYOR bars on the display\" width=\"726\" height=\"352\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-10.png 1823w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-10-300x145.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-10-1024x496.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-10-768x372.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-10-600x291.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-10-1536x744.png 1536w\" sizes=\"(max-width: 726px) 100vw, 726px\" \/><figcaption id=\"caption-attachment-14358\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 10. Warning disappeared<\/span><\/figcaption><\/figure>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400;\">We created the first step. In the following article, let&#8217;s set up the main system clock.&nbsp;<\/span><\/p>\n<p class=\"\" style=\"border-width: 0px;\">&nbsp;<\/p>\n<p class=\"\" style=\"font-size: 18px; line-height: 30px; font-family: 'Roboto Slab'; font-weight: 400;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"color: #800080;\"><b>Get the Full Course on STM32-LTDC, LCD TFT, LVGL (MCU3)<\/b><span style=\"color: #0000ff;\"><a style=\"color: #0000ff;\" href=\"https:\/\/www.udemy.com\/course\/mastering-microcontroller-stm32-ltdc-lcd-tft-lvgl\/\"> <b>Here.<\/b><\/a><\/span><\/span><\/p>\n<p class=\"\" style=\"font-size: 23px; border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"color: #000080;\"><b>FastBit Embedded Brain Academy Courses<\/b><\/span><\/p>\n<p class=\"\" style=\"font-size: 17px; border-width: 0px;\"><span style=\"color: #000000;\">C<span style=\"font-weight: 400;\"><span style=\"color: #000000;\">lick here:<\/span><span style=\"color: #0000ff;\">&nbsp;<\/span><\/span><\/span><span style=\"color: #0000ff;\"><a style=\"color: #0000ff; text-decoration: underline;\" href=\"http:\/\/fastbitlab.com\/course1\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">https:\/\/fastbitlab.com\/course1<\/span><\/a><\/span><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; Displaying VIGBYOR bars on the display &nbsp; Exercise: Display VIBGYOR color bars Here we code from scratch. We will not be using the STM32Cube code auto-generation feature, and for later exercises, we can use the code auto-generation feature. But for this exercise at least we will code everything from scratch and when we code [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":14349,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"0","ocean_second_sidebar":"0","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"0","ocean_custom_header_template":"0","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"0","ocean_menu_typo_font_family":"0","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"enable","ocean_disable_heading":"default","ocean_post_title":"Exercise-001 : Displaying VIGBYOR bars on the display","ocean_post_subheading":"","ocean_post_title_style":"solid-color","ocean_post_title_background_color":"#00529b","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"off","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"0","ocean_post_oembed":"","ocean_post_self_hosted_media":"","ocean_post_video_embed":"","ocean_link_format":"","ocean_link_format_target":"self","ocean_quote_format":"","ocean_quote_format_link":"post","ocean_gallery_link_images":"off","ocean_gallery_id":[],"footnotes":""},"categories":[8],"tags":[],"class_list":["post-14346","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","entry","has-media"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Creating VIBGYOR Color Bars on STM32 Display: Step-by-Step<\/title>\n<meta name=\"description\" content=\"Learn how to display vibrant VIBGYOR bars on an STM32F429IDISCOVERY board using STM32CubeIDE. This step-by-step guide covers project setup,\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fastbitlab.com\/blog\/vibgyor-bars-display-stm32f429idiscovery\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Creating VIBGYOR Color Bars on STM32 Display: Step-by-Step\" \/>\n<meta property=\"og:description\" content=\"Learn how to display vibrant VIBGYOR bars on an STM32F429IDISCOVERY board using STM32CubeIDE. This step-by-step guide covers project setup,\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fastbitlab.com\/blog\/vibgyor-bars-display-stm32f429idiscovery\/\" \/>\n<meta property=\"og:site_name\" content=\"FastBit EBA\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/fastbiteba\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-04-14T05:15:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-09-07T07:03:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-1-5.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1835\" \/>\n\t<meta property=\"og:image:height\" content=\"757\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"FastBitLab\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@fastbiteba\" \/>\n<meta name=\"twitter:site\" content=\"@fastbiteba\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"FastBitLab\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/vibgyor-bars-display-stm32f429idiscovery\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/vibgyor-bars-display-stm32f429idiscovery\\\/\"},\"author\":{\"name\":\"FastBitLab\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#\\\/schema\\\/person\\\/e32b38e733a0d76ffa7e6bc998652e5d\"},\"headline\":\"STM32-LTDC, LCD-TFT, LVGL (MCU3) Lecture 15| Exercise-001 : Displaying VIGBYOR bars on the display\",\"datePublished\":\"2023-04-14T05:15:15+00:00\",\"dateModified\":\"2023-09-07T07:03:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/vibgyor-bars-display-stm32f429idiscovery\\\/\"},\"wordCount\":888,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/vibgyor-bars-display-stm32f429idiscovery\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/Figure-1-5.png\",\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/vibgyor-bars-display-stm32f429idiscovery\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/vibgyor-bars-display-stm32f429idiscovery\\\/\",\"url\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/vibgyor-bars-display-stm32f429idiscovery\\\/\",\"name\":\"Creating VIBGYOR Color Bars on STM32 Display: Step-by-Step\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/vibgyor-bars-display-stm32f429idiscovery\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/vibgyor-bars-display-stm32f429idiscovery\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/Figure-1-5.png\",\"datePublished\":\"2023-04-14T05:15:15+00:00\",\"dateModified\":\"2023-09-07T07:03:46+00:00\",\"description\":\"Learn how to display vibrant VIBGYOR bars on an STM32F429IDISCOVERY board using STM32CubeIDE. This step-by-step guide covers project setup,\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/vibgyor-bars-display-stm32f429idiscovery\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/vibgyor-bars-display-stm32f429idiscovery\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/vibgyor-bars-display-stm32f429idiscovery\\\/#primaryimage\",\"url\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/Figure-1-5.png\",\"contentUrl\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/Figure-1-5.png\",\"width\":1835,\"height\":757,\"caption\":\"Figure 1. VIBGYOR bars and RGB value\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/vibgyor-bars-display-stm32f429idiscovery\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"STM32-LTDC, LCD-TFT, LVGL (MCU3) Lecture 15| Exercise-001 : Displaying VIGBYOR bars on the display\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/\",\"name\":\"FastBit EBA\",\"description\":\"Your Online Academy of Embedded Systems\",\"publisher\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#organization\",\"name\":\"FastBit EBA\",\"url\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/logo-EzNrEnyr.png\",\"contentUrl\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/logo-EzNrEnyr.png\",\"width\":640,\"height\":640,\"caption\":\"FastBit EBA\"},\"image\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/fastbiteba\\\/\",\"https:\\\/\\\/x.com\\\/fastbiteba\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/fastbit-embedded-brain-academy-b3167b124\\\/\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCa1REBV9hyrzGp2mjJCagBg\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#\\\/schema\\\/person\\\/e32b38e733a0d76ffa7e6bc998652e5d\",\"name\":\"FastBitLab\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9230d0f9bdef28b63a01e7ca274ee7b2e8ed9abe932ee564af8809caaf52a0c8?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9230d0f9bdef28b63a01e7ca274ee7b2e8ed9abe932ee564af8809caaf52a0c8?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9230d0f9bdef28b63a01e7ca274ee7b2e8ed9abe932ee564af8809caaf52a0c8?s=96&d=mm&r=g\",\"caption\":\"FastBitLab\"},\"description\":\"The FastBit Embedded Brain Academy uses the power of internet to bring the online courses related to the field of embedded system programming, Real time operating system, Embedded Linux systems, etc at your finger tip with very low cost. Backed with strong experience of industry, we have produced lots of courses with the customer enrolment over 3000+ across 100+ countries.\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Creating VIBGYOR Color Bars on STM32 Display: Step-by-Step","description":"Learn how to display vibrant VIBGYOR bars on an STM32F429IDISCOVERY board using STM32CubeIDE. This step-by-step guide covers project setup,","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fastbitlab.com\/blog\/vibgyor-bars-display-stm32f429idiscovery\/","og_locale":"en_US","og_type":"article","og_title":"Creating VIBGYOR Color Bars on STM32 Display: Step-by-Step","og_description":"Learn how to display vibrant VIBGYOR bars on an STM32F429IDISCOVERY board using STM32CubeIDE. This step-by-step guide covers project setup,","og_url":"https:\/\/fastbitlab.com\/blog\/vibgyor-bars-display-stm32f429idiscovery\/","og_site_name":"FastBit EBA","article_publisher":"https:\/\/www.facebook.com\/fastbiteba\/","article_published_time":"2023-04-14T05:15:15+00:00","article_modified_time":"2023-09-07T07:03:46+00:00","og_image":[{"width":1835,"height":757,"url":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-1-5.png","type":"image\/png"}],"author":"FastBitLab","twitter_card":"summary_large_image","twitter_creator":"@fastbiteba","twitter_site":"@fastbiteba","twitter_misc":{"Written by":"FastBitLab","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fastbitlab.com\/blog\/vibgyor-bars-display-stm32f429idiscovery\/#article","isPartOf":{"@id":"https:\/\/fastbitlab.com\/blog\/vibgyor-bars-display-stm32f429idiscovery\/"},"author":{"name":"FastBitLab","@id":"https:\/\/fastbitlab.com\/blog\/#\/schema\/person\/e32b38e733a0d76ffa7e6bc998652e5d"},"headline":"STM32-LTDC, LCD-TFT, LVGL (MCU3) Lecture 15| Exercise-001 : Displaying VIGBYOR bars on the display","datePublished":"2023-04-14T05:15:15+00:00","dateModified":"2023-09-07T07:03:46+00:00","mainEntityOfPage":{"@id":"https:\/\/fastbitlab.com\/blog\/vibgyor-bars-display-stm32f429idiscovery\/"},"wordCount":888,"commentCount":0,"publisher":{"@id":"https:\/\/fastbitlab.com\/blog\/#organization"},"image":{"@id":"https:\/\/fastbitlab.com\/blog\/vibgyor-bars-display-stm32f429idiscovery\/#primaryimage"},"thumbnailUrl":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-1-5.png","articleSection":["Blog"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fastbitlab.com\/blog\/vibgyor-bars-display-stm32f429idiscovery\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fastbitlab.com\/blog\/vibgyor-bars-display-stm32f429idiscovery\/","url":"https:\/\/fastbitlab.com\/blog\/vibgyor-bars-display-stm32f429idiscovery\/","name":"Creating VIBGYOR Color Bars on STM32 Display: Step-by-Step","isPartOf":{"@id":"https:\/\/fastbitlab.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fastbitlab.com\/blog\/vibgyor-bars-display-stm32f429idiscovery\/#primaryimage"},"image":{"@id":"https:\/\/fastbitlab.com\/blog\/vibgyor-bars-display-stm32f429idiscovery\/#primaryimage"},"thumbnailUrl":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-1-5.png","datePublished":"2023-04-14T05:15:15+00:00","dateModified":"2023-09-07T07:03:46+00:00","description":"Learn how to display vibrant VIBGYOR bars on an STM32F429IDISCOVERY board using STM32CubeIDE. This step-by-step guide covers project setup,","breadcrumb":{"@id":"https:\/\/fastbitlab.com\/blog\/vibgyor-bars-display-stm32f429idiscovery\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fastbitlab.com\/blog\/vibgyor-bars-display-stm32f429idiscovery\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fastbitlab.com\/blog\/vibgyor-bars-display-stm32f429idiscovery\/#primaryimage","url":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-1-5.png","contentUrl":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-1-5.png","width":1835,"height":757,"caption":"Figure 1. VIBGYOR bars and RGB value"},{"@type":"BreadcrumbList","@id":"https:\/\/fastbitlab.com\/blog\/vibgyor-bars-display-stm32f429idiscovery\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fastbitlab.com\/blog\/"},{"@type":"ListItem","position":2,"name":"STM32-LTDC, LCD-TFT, LVGL (MCU3) Lecture 15| Exercise-001 : Displaying VIGBYOR bars on the display"}]},{"@type":"WebSite","@id":"https:\/\/fastbitlab.com\/blog\/#website","url":"https:\/\/fastbitlab.com\/blog\/","name":"FastBit EBA","description":"Your Online Academy of Embedded Systems","publisher":{"@id":"https:\/\/fastbitlab.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fastbitlab.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/fastbitlab.com\/blog\/#organization","name":"FastBit EBA","url":"https:\/\/fastbitlab.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fastbitlab.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2026\/04\/logo-EzNrEnyr.png","contentUrl":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2026\/04\/logo-EzNrEnyr.png","width":640,"height":640,"caption":"FastBit EBA"},"image":{"@id":"https:\/\/fastbitlab.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/fastbiteba\/","https:\/\/x.com\/fastbiteba","https:\/\/www.linkedin.com\/in\/fastbit-embedded-brain-academy-b3167b124\/","https:\/\/www.youtube.com\/channel\/UCa1REBV9hyrzGp2mjJCagBg"]},{"@type":"Person","@id":"https:\/\/fastbitlab.com\/blog\/#\/schema\/person\/e32b38e733a0d76ffa7e6bc998652e5d","name":"FastBitLab","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/9230d0f9bdef28b63a01e7ca274ee7b2e8ed9abe932ee564af8809caaf52a0c8?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/9230d0f9bdef28b63a01e7ca274ee7b2e8ed9abe932ee564af8809caaf52a0c8?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9230d0f9bdef28b63a01e7ca274ee7b2e8ed9abe932ee564af8809caaf52a0c8?s=96&d=mm&r=g","caption":"FastBitLab"},"description":"The FastBit Embedded Brain Academy uses the power of internet to bring the online courses related to the field of embedded system programming, Real time operating system, Embedded Linux systems, etc at your finger tip with very low cost. Backed with strong experience of industry, we have produced lots of courses with the customer enrolment over 3000+ across 100+ countries."}]}},"_links":{"self":[{"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/posts\/14346","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/comments?post=14346"}],"version-history":[{"count":5,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/posts\/14346\/revisions"}],"predecessor-version":[{"id":15847,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/posts\/14346\/revisions\/15847"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/media\/14349"}],"wp:attachment":[{"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/media?parent=14346"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/categories?post=14346"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/tags?post=14346"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}