{"id":14547,"date":"2023-04-28T10:17:41","date_gmt":"2023-04-28T04:47:41","guid":{"rendered":"https:\/\/fastbitlab.com\/?p=14547"},"modified":"2023-08-17T09:55:01","modified_gmt":"2023-08-17T04:25:01","slug":"stm32-ltdc-lcd-tft-lvgl-mcu3-lecture-22-setting-up-main-system-clock-code-implementation-part-6","status":"publish","type":"post","link":"https:\/\/fastbitlab.com\/blog\/stm32-ltdc-lcd-tft-lvgl-mcu3-lecture-22-setting-up-main-system-clock-code-implementation-part-6\/","title":{"rendered":"STM32-LTDC, LCD-TFT, LVGL (MCU3) Lecture 22| Setting up main system clock code implementation part-6"},"content":{"rendered":"<div class=\"boldgrid-section color4-background-color color-4-text-contrast bg-background-color\">\n<div class=\"container\">\n<div class=\"row\">\n<div class=\"col-lg-1 col-md-12 col-sm-12 col-xs-12\"><\/div>\n<div class=\"col-lg-10 col-md-12 col-xs-12 col-sm-12\">\n<p class=\"\">&nbsp;<\/p>\n<h1 class=\"\" style=\"text-align: center; font-size: 37px;\"><span style=\"color: #000080;\"><b>Setting up main system clock code implementation part-6<\/b><\/span><\/h1>\n<div class=\"row bg-editor-hr-wrap\">\n<div class=\"col-lg-12 col-md-12 col-xs-12 col-sm-12\">\n<div>\n<div class=\"bg-hr bg-hr-16 color2-color\" style=\"border-style: solid; border-width: 0px 0px 2px;\"><\/div>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p class=\"\" style=\"font-size: 21px; 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: #e04e14;\"><strong><span style=\"text-decoration: underline;\">SystemClock_Setup code for STM32F407 Discovery Board&nbsp;<\/span><\/strong><\/span><\/p>\n<pre class=\"color-5-text-contrast color5-background-color\" style=\"box-shadow: #cecece 0px 0px 0px 0px inset;\"><span style=\"color: #993366;\">void<\/span> SystemClock_Setup(void)\r\n\r\n{\r\n\r\n<span style=\"color: #008000;\">RCC_TypeDef<\/span> *pRCC = RCC;\r\n<span style=\"color: #008000;\">FLASH_TypeDef<\/span> *pFlash = FLASH;\r\n<span style=\"color: #008000;\">PWR_TypeDef<\/span> *pPWR = PWR;\r\n\r\n<span style=\"color: #008000;\">\/\/1. Program flash wait states<\/span>\r\nREG_SET_VAL(pFlash-&gt;<span style=\"color: #3366ff;\">ACR<\/span>,0x5U,0xFU,FLASH_ACR_LATENCY_Pos);\r\n\r\n<span style=\"color: #008000;\">\/\/2. Over drive settings<\/span>\r\nREG_SET_BIT(pRCC-&gt;<span style=\"color: #3366ff;\">APB1ENR<\/span>,RCC_APB1ENR_PWREN_Pos); <span style=\"color: #008000;\">\/*Enable clock for PWR register access*\/<\/span>\r\nREG_SET_BIT(pPWR-&gt;<span style=\"color: #3366ff;\">CR<\/span>,PWR_CR_VOS_Pos); <span style=\"color: #008000;\">\/*VOS = 1*\/<\/span>\r\n\r\n<span style=\"color: #008000;\">\/\/3. Setting up main PLL<\/span>\r\nREG_SET_VAL(pRCC-&gt;<span style=\"color: #3366ff;\">PLLCFGR<\/span>,0x8U,0x3FU,RCC_PLLCFGR_PLLM_Pos);<span style=\"color: #008000;\"> \/*PLL_M*\/<\/span>\r\nREG_SET_VAL(pRCC-&gt;<span style=\"color: #3366ff;\">PLLCFGR<\/span>,168U,0x1FFU,RCC_PLLCFGR_PLLN_Pos); <span style=\"color: #008000;\">\/*PLL_N*\/<\/span>\r\nREG_SET_VAL(pRCC-&gt;<span style=\"color: #3366ff;\">PLLCFGR<\/span>,0x00U,0x3U,RCC_PLLCFGR_PLLP_Pos); <span style=\"color: #008000;\">\/*PLL_P*\/<\/span>\r\n\r\n<span style=\"color: #008000;\">\/\/5. Setting up AHB and APBx clocks<\/span>\r\nREG_SET_VAL(pRCC-&gt;<span style=\"color: #3366ff;\">CFGR<\/span>,0U,0xFU,RCC_CFGR_HPRE_Pos); <span style=\"color: #008000;\">\/*AHB prescaler*\/<\/span>\r\nREG_SET_VAL(pRCC-&gt;<span style=\"color: #3366ff;\">CFGR<\/span>,0x5U,0x7U,RCC_CFGR_PPRE1_Pos); <span style=\"color: #008000;\">\/*APB1 prescaler*\/<\/span>\r\nREG_SET_VAL(pRCC-&gt;<span style=\"color: #3366ff;\">CFGR<\/span>,0x4U,0x7U,RCC_CFGR_PPRE2_Pos); <span style=\"color: #008000;\">\/*APB2 prescaler*\/<\/span>\r\n\r\n<span style=\"color: #008000;\">\/\/6. Turn on PLL and wait for PLLCLK ready<\/span>\r\nREG_SET_BIT(pRCC-&gt;<span style=\"color: #3366ff;\">CR<\/span>,RCC_CR_PLLON_Pos);\r\n<span style=\"color: #993366;\">while<\/span>(!REG_READ_BIT(pRCC-&gt;<span style=\"color: #3366ff;\">CR<\/span>,RCC_CR_PLLRDY_Pos));\r\n\r\n<span style=\"color: #008000;\">\/\/7. Switch PLLCLK as SYSCLK<\/span>\r\nREG_SET_VAL(pRCC-&gt;<span style=\"color: #3366ff;\">CFGR<\/span>,0x2U,0x3U,RCC_CFGR_SW_Pos);\r\n<span style=\"color: #993366;\">while<\/span>(!(REG_READ_VAL(pRCC-&gt;<span style=\"color: #3366ff;\">CFGR<\/span>,0x3U,RCC_CFGR_SWS_Pos) == 0x2U));\r\n\r\n}<\/pre>\n<p class=\"\" style=\"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;\">The code is pretty much the same compared to the previous one(SystemClock_Setup code for stm32f429 discovery). In the Overdrive settings, we modified some code.&nbsp;<\/span><\/p>\n<p class=\"\" style=\"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;\">In this microcontroller, the maximum speed you can achieve is 168MHz. That&#8217;s why, I have modified this line here for the PLL_N entry.&nbsp;<\/span><\/p>\n<p class=\"\" style=\"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 apart from that, all these codes remain the same.<\/span><\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"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=\"color: #e04e14;\"><strong><span style=\"text-decoration: underline;\">SystemClock_Setup code for STM32F746 Discovery Board<\/span><\/strong><\/span><\/p>\n<p class=\"\" style=\"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;\">Below code snippet shows how the system clock setup code looks in the STM32F746 Discovery board.&nbsp;<\/span><\/p>\n<pre class=\"color-5-text-contrast color5-background-color\" style=\"box-shadow: #cecece 0px 0px 0px 0px;\"><span style=\"color: #993366;\">void<\/span> SystemClock_Setup(<span style=\"color: #993366;\">void<\/span>)\r\n{\r\n<span style=\"color: #008000;\">RCC_TypeDef<\/span> *pRCC = RCC;\r\n<span style=\"color: #008000;\">FLASH_TypeDef<\/span> *pFlash = FLASH;\r\n<span style=\"color: #008000;\">PWR_TypeDef<\/span> *pPWR = PWR;\r\n\r\n<span style=\"color: #008000;\">\/\/1. Program flash wait states<\/span>\r\nREG_SET_VAL(pFlash-&gt;<span style=\"color: #3366ff;\">ACR<\/span>,0x7U,0xFU,FLASH_ACR_LATENCY_Pos);\r\n\r\n<span style=\"color: #008000;\">\/\/2. Over drive settings<\/span>\r\nREG_SET_BIT(pRCC-&gt;<span style=\"color: #3366ff;\">APB1ENR<\/span>,RCC_APB1ENR_PWREN_Pos); <span style=\"color: #008000;\">\/*Enable clock for PWR register access*\/<\/span>\r\nREG_SET_VAL(pPWR-&gt;<span style=\"color: #3366ff;\">CR1<\/span>,0x3,0x3,PWR_CR1_VOS_Pos); <span style=\"color: #008000;\">\/*VOS = 0b11*\/<\/span>\r\nREG_SET_BIT(pPWR-&gt;<span style=\"color: #3366ff;\">CR1<\/span>,PWR_CR1_ODEN_Pos); <span style=\"color: #008000;\">\/* Activate over drive mode *\/<\/span>\r\n<span style=\"color: #993366;\">while<\/span>(! REG_READ_BIT(pPWR-&gt;<span style=\"color: #3366ff;\">CSR<\/span>1,PWR_CSR1_ODRDY_Pos)); <span style=\"color: #008000;\">\/* wait for overdrive ready*\/<\/span>\r\nREG_SET_BIT(pPWR-&gt;<span style=\"color: #3366ff;\">CR1<\/span>,PWR_CR1_ODSWEN_Pos);<span style=\"color: #008000;\"> \/* Over drive switch enable*\/<\/span>\r\n\r\n<span style=\"color: #008000;\">\/\/3. Setting up main PLL<\/span>\r\nREG_SET_VAL(pRCC-&gt;<span style=\"color: #3366ff;\">PLLCFGR<\/span>,0x8U,0x3FU,RCC_PLLCFGR_PLLM_Pos); <span style=\"color: #008000;\">\/*PLL_M*\/<\/span>\r\nREG_SET_VAL(pRCC-&gt;<span style=\"color: #3366ff;\">PLLCFGR<\/span>,216U,0x1FFU,RCC_PLLCFGR_PLLN_Pos);<span style=\"color: #008000;\"> \/*PLL_N*\/<\/span>\r\nREG_SET_VAL(pRCC-&gt;<span style=\"color: #3366ff;\">PLLCFGR<\/span>,0x00U,0x3U,RCC_PLLCFGR_PLLP_Pos); <span style=\"color: #008000;\">\/*PLL_P*\/<\/span>\r\n\r\n<span style=\"color: #008000;\">\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/This step is only required if you are using RGB interface \/\/\/\/\/\/\/\/\/\/\/\/<\/span>\r\n<span style=\"color: #008000;\">\/\/4. Setting up LCD_CLK using PLLSAI block<\/span>\r\nREG_SET_VAL(pRCC-&gt;<span style=\"color: #3366ff;\">PLLSAICFGR<\/span>,50U,0x1FFU,RCC_PLLSAICFGR_PLLSAIN_Pos); <span style=\"color: #008000;\">\/*PLLSAI_N*\/<\/span>\r\nREG_SET_VAL(pRCC-&gt;<span style=\"color: #3366ff;\">PLLSAICFGR<\/span>,0x02U,0x7U,RCC_PLLSAICFGR_PLLSAIR_Pos);<span style=\"color: #008000;\"> \/*PLLSAI_R*\/<\/span>\r\nREG_SET_VAL(pRCC-&gt;<span style=\"color: #3366ff;\">DCKCFGR1<\/span>,0x00u,0x3U,RCC_DCKCFGR1_PLLSAIDIVR_Pos); <span style=\"color: #008000;\">\/*DIV*\/<\/span>\r\nREG_SET_BIT(pRCC-&gt;<span style=\"color: #3366ff;\">CR<\/span>,RCC_CR_PLLSAION_Pos);\r\nwhile(!REG_READ_BIT(pRCC-&gt;<span style=\"color: #3366ff;\">CR<\/span>,RCC_CR_PLLSAIRDY_Pos));\r\n<span style=\"color: #008000;\">\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/span>\r\n\r\n<span style=\"color: #008000;\">\/\/5. Setting up AHB and APBx clocks<\/span>\r\nREG_SET_VAL(pRCC-&gt;<span style=\"color: #3366ff;\">CFGR<\/span>,0U,0xFU,RCC_CFGR_HPRE_Pos); <span style=\"color: #008000;\">\/*AHB prescaler*\/<\/span>\r\nREG_SET_VAL(pRCC-&gt;<span style=\"color: #3366ff;\">CFGR<\/span>,0x5U,0x7U,RCC_CFGR_PPRE1_Pos); <span style=\"color: #008000;\">\/*APB1 prescaler*\/<\/span>\r\nREG_SET_VAL(pRCC-&gt;<span style=\"color: #3366ff;\">CFGR<\/span>,0x4U,0x7U,RCC_CFGR_PPRE2_Pos); <span style=\"color: #008000;\">\/*APB2 prescaler*\/<\/span>\r\n\r\n<span style=\"color: #008000;\">\/\/6. Turn on PLL and wait for PLLCLK ready<\/span>\r\nREG_SET_BIT(pRCC-&gt;<span style=\"color: #3366ff;\">CR<\/span>,RCC_CR_PLLON_Pos);\r\n<span style=\"color: #993366;\">while<\/span>(!REG_READ_BIT(pRCC-&gt;<span style=\"color: #3366ff;\">CR<\/span>,RCC_CR_PLLRDY_Pos));\r\n\r\n<span style=\"color: #008000;\">\/\/7. Switch PLLCLK as SYSCLK<\/span>\r\nREG_SET_VAL(pRCC-&gt;<span style=\"color: #3366ff;\">CFGR<\/span>,0x2U,0x3U,RCC_CFGR_SW_Pos);\r\n<span style=\"color: #993366;\">while<\/span>(!(REG_READ_VAL(pRCC-&gt;<span style=\"color: #3366ff;\">CFGR<\/span>,0x3U,RCC_CFGR_SWS_Pos) == 0x2U));\r\n\r\n}<\/pre>\n<p class=\"\" style=\"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;\">In this microcontroller, the maximum speed that you can achieve is, 216 MHz(line 217).<\/span><\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 29px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">And also, we have to produce the LCD_CLK by using the PLLSAI block of the RCC.&nbsp;<\/span><\/p>\n<p class=\"\" style=\"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, please compare your code with this code. And you can also verify the clock by using an oscilloscope. For that, you have to route this clock via some microcontroller pin. So, that feature is available in the microcontroller. And if you just explore the RCC section of the <span style=\"color: #0000ff;\"><a style=\"color: #0000ff;\" href=\"https:\/\/www.st.com\/resource\/en\/reference_manual\/dm00031020-stm32f405-415-stm32f407-417-stm32f427-437-and-stm32f429-439-advanced-arm-based-32-bit-mcus-stmicroelectronics.pdf\">reference manual<\/a><\/span>, they have mentioned how to route the clock via the microcontroller pins for measurement purposes.<\/span><\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"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=\"color: #000080;\"><b>FastBit Embedded Brain Academy Courses<\/b><\/span><\/p>\n<p class=\"\" style=\"font-size: 17px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"color: #000000;\">Click here:&nbsp;<\/span><span style=\"color: #0000ff;\"><a style=\"color: #0000ff;\" href=\"https:\/\/fastbitlab.com\/course1\" target=\"_blank\" rel=\"noopener\">https:\/\/fastbitlab.com\/course1<\/a><\/span><\/p>\n<p class=\"\">&nbsp;<\/p>\n<\/div>\n<div class=\"col-lg-1 col-md-12 col-sm-12 col-xs-12\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; Setting up main system clock code implementation part-6 &nbsp; SystemClock_Setup code for STM32F407 Discovery Board&nbsp; void SystemClock_Setup(void) { RCC_TypeDef *pRCC = RCC; FLASH_TypeDef *pFlash = FLASH; PWR_TypeDef *pPWR = PWR; \/\/1. Program flash wait states REG_SET_VAL(pFlash-&gt;ACR,0x5U,0xFU,FLASH_ACR_LATENCY_Pos); \/\/2. Over drive settings REG_SET_BIT(pRCC-&gt;APB1ENR,RCC_APB1ENR_PWREN_Pos); \/*Enable clock for PWR register access*\/ REG_SET_BIT(pPWR-&gt;CR,PWR_CR_VOS_Pos); \/*VOS = 1*\/ \/\/3. Setting up [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":14551,"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":"Setting up main system clock code implementation part-6","ocean_post_subheading":"","ocean_post_title_style":"solid-color","ocean_post_title_background_color":"#004093","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-14547","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>System Clock Setup code for STM32F407 Discovery Board\u00a0<\/title>\n<meta name=\"description\" content=\"Learn how to efficiently configure the system clock on the STM32F407 Discovery board using code implementation. Discover steps to achieve the\" \/>\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\/stm32-ltdc-lcd-tft-lvgl-mcu3-lecture-22-setting-up-main-system-clock-code-implementation-part-6\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"System Clock Setup code for STM32F407 Discovery Board\u00a0\" \/>\n<meta property=\"og:description\" content=\"Learn how to efficiently configure the system clock on the STM32F407 Discovery board using code implementation. Discover steps to achieve the\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fastbitlab.com\/blog\/stm32-ltdc-lcd-tft-lvgl-mcu3-lecture-22-setting-up-main-system-clock-code-implementation-part-6\/\" \/>\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-28T04:47:41+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-17T04:25:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-1-11.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1679\" \/>\n\t<meta property=\"og:image:height\" content=\"937\" \/>\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=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/stm32-ltdc-lcd-tft-lvgl-mcu3-lecture-22-setting-up-main-system-clock-code-implementation-part-6\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/stm32-ltdc-lcd-tft-lvgl-mcu3-lecture-22-setting-up-main-system-clock-code-implementation-part-6\\\/\"},\"author\":{\"name\":\"FastBitLab\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#\\\/schema\\\/person\\\/e32b38e733a0d76ffa7e6bc998652e5d\"},\"headline\":\"STM32-LTDC, LCD-TFT, LVGL (MCU3) Lecture 22| Setting up main system clock code implementation part-6\",\"datePublished\":\"2023-04-28T04:47:41+00:00\",\"dateModified\":\"2023-08-17T04:25:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/stm32-ltdc-lcd-tft-lvgl-mcu3-lecture-22-setting-up-main-system-clock-code-implementation-part-6\\\/\"},\"wordCount\":235,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/stm32-ltdc-lcd-tft-lvgl-mcu3-lecture-22-setting-up-main-system-clock-code-implementation-part-6\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/Figure-1-11.png\",\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/stm32-ltdc-lcd-tft-lvgl-mcu3-lecture-22-setting-up-main-system-clock-code-implementation-part-6\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/stm32-ltdc-lcd-tft-lvgl-mcu3-lecture-22-setting-up-main-system-clock-code-implementation-part-6\\\/\",\"url\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/stm32-ltdc-lcd-tft-lvgl-mcu3-lecture-22-setting-up-main-system-clock-code-implementation-part-6\\\/\",\"name\":\"System Clock Setup code for STM32F407 Discovery Board\u00a0\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/stm32-ltdc-lcd-tft-lvgl-mcu3-lecture-22-setting-up-main-system-clock-code-implementation-part-6\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/stm32-ltdc-lcd-tft-lvgl-mcu3-lecture-22-setting-up-main-system-clock-code-implementation-part-6\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/Figure-1-11.png\",\"datePublished\":\"2023-04-28T04:47:41+00:00\",\"dateModified\":\"2023-08-17T04:25:01+00:00\",\"description\":\"Learn how to efficiently configure the system clock on the STM32F407 Discovery board using code implementation. Discover steps to achieve the\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/stm32-ltdc-lcd-tft-lvgl-mcu3-lecture-22-setting-up-main-system-clock-code-implementation-part-6\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/stm32-ltdc-lcd-tft-lvgl-mcu3-lecture-22-setting-up-main-system-clock-code-implementation-part-6\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/stm32-ltdc-lcd-tft-lvgl-mcu3-lecture-22-setting-up-main-system-clock-code-implementation-part-6\\\/#primaryimage\",\"url\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/Figure-1-11.png\",\"contentUrl\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/Figure-1-11.png\",\"width\":1679,\"height\":937,\"caption\":\"Figure 1. Code\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/stm32-ltdc-lcd-tft-lvgl-mcu3-lecture-22-setting-up-main-system-clock-code-implementation-part-6\\\/#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 22| Setting up main system clock code implementation part-6\"}]},{\"@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":"System Clock Setup code for STM32F407 Discovery Board\u00a0","description":"Learn how to efficiently configure the system clock on the STM32F407 Discovery board using code implementation. Discover steps to achieve the","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\/stm32-ltdc-lcd-tft-lvgl-mcu3-lecture-22-setting-up-main-system-clock-code-implementation-part-6\/","og_locale":"en_US","og_type":"article","og_title":"System Clock Setup code for STM32F407 Discovery Board\u00a0","og_description":"Learn how to efficiently configure the system clock on the STM32F407 Discovery board using code implementation. Discover steps to achieve the","og_url":"https:\/\/fastbitlab.com\/blog\/stm32-ltdc-lcd-tft-lvgl-mcu3-lecture-22-setting-up-main-system-clock-code-implementation-part-6\/","og_site_name":"FastBit EBA","article_publisher":"https:\/\/www.facebook.com\/fastbiteba\/","article_published_time":"2023-04-28T04:47:41+00:00","article_modified_time":"2023-08-17T04:25:01+00:00","og_image":[{"width":1679,"height":937,"url":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-1-11.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":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fastbitlab.com\/blog\/stm32-ltdc-lcd-tft-lvgl-mcu3-lecture-22-setting-up-main-system-clock-code-implementation-part-6\/#article","isPartOf":{"@id":"https:\/\/fastbitlab.com\/blog\/stm32-ltdc-lcd-tft-lvgl-mcu3-lecture-22-setting-up-main-system-clock-code-implementation-part-6\/"},"author":{"name":"FastBitLab","@id":"https:\/\/fastbitlab.com\/blog\/#\/schema\/person\/e32b38e733a0d76ffa7e6bc998652e5d"},"headline":"STM32-LTDC, LCD-TFT, LVGL (MCU3) Lecture 22| Setting up main system clock code implementation part-6","datePublished":"2023-04-28T04:47:41+00:00","dateModified":"2023-08-17T04:25:01+00:00","mainEntityOfPage":{"@id":"https:\/\/fastbitlab.com\/blog\/stm32-ltdc-lcd-tft-lvgl-mcu3-lecture-22-setting-up-main-system-clock-code-implementation-part-6\/"},"wordCount":235,"commentCount":0,"publisher":{"@id":"https:\/\/fastbitlab.com\/blog\/#organization"},"image":{"@id":"https:\/\/fastbitlab.com\/blog\/stm32-ltdc-lcd-tft-lvgl-mcu3-lecture-22-setting-up-main-system-clock-code-implementation-part-6\/#primaryimage"},"thumbnailUrl":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-1-11.png","articleSection":["Blog"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fastbitlab.com\/blog\/stm32-ltdc-lcd-tft-lvgl-mcu3-lecture-22-setting-up-main-system-clock-code-implementation-part-6\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fastbitlab.com\/blog\/stm32-ltdc-lcd-tft-lvgl-mcu3-lecture-22-setting-up-main-system-clock-code-implementation-part-6\/","url":"https:\/\/fastbitlab.com\/blog\/stm32-ltdc-lcd-tft-lvgl-mcu3-lecture-22-setting-up-main-system-clock-code-implementation-part-6\/","name":"System Clock Setup code for STM32F407 Discovery Board\u00a0","isPartOf":{"@id":"https:\/\/fastbitlab.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fastbitlab.com\/blog\/stm32-ltdc-lcd-tft-lvgl-mcu3-lecture-22-setting-up-main-system-clock-code-implementation-part-6\/#primaryimage"},"image":{"@id":"https:\/\/fastbitlab.com\/blog\/stm32-ltdc-lcd-tft-lvgl-mcu3-lecture-22-setting-up-main-system-clock-code-implementation-part-6\/#primaryimage"},"thumbnailUrl":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-1-11.png","datePublished":"2023-04-28T04:47:41+00:00","dateModified":"2023-08-17T04:25:01+00:00","description":"Learn how to efficiently configure the system clock on the STM32F407 Discovery board using code implementation. Discover steps to achieve the","breadcrumb":{"@id":"https:\/\/fastbitlab.com\/blog\/stm32-ltdc-lcd-tft-lvgl-mcu3-lecture-22-setting-up-main-system-clock-code-implementation-part-6\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fastbitlab.com\/blog\/stm32-ltdc-lcd-tft-lvgl-mcu3-lecture-22-setting-up-main-system-clock-code-implementation-part-6\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fastbitlab.com\/blog\/stm32-ltdc-lcd-tft-lvgl-mcu3-lecture-22-setting-up-main-system-clock-code-implementation-part-6\/#primaryimage","url":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-1-11.png","contentUrl":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/04\/Figure-1-11.png","width":1679,"height":937,"caption":"Figure 1. Code"},{"@type":"BreadcrumbList","@id":"https:\/\/fastbitlab.com\/blog\/stm32-ltdc-lcd-tft-lvgl-mcu3-lecture-22-setting-up-main-system-clock-code-implementation-part-6\/#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 22| Setting up main system clock code implementation part-6"}]},{"@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\/14547","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=14547"}],"version-history":[{"count":4,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/posts\/14547\/revisions"}],"predecessor-version":[{"id":15186,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/posts\/14547\/revisions\/15186"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/media\/14551"}],"wp:attachment":[{"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/media?parent=14547"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/categories?post=14547"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/tags?post=14547"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}