{"id":129689,"date":"2026-03-16T14:00:51","date_gmt":"2026-03-16T13:00:51","guid":{"rendered":"https:\/\/riverdi.com\/blog\/a-guide-to-fundamental-display-operations-on-stm32"},"modified":"2026-03-16T14:00:51","modified_gmt":"2026-03-16T13:00:51","slug":"a-guide-to-fundamental-display-operations-on-stm32","status":"publish","type":"post","link":"https:\/\/riverdi.com\/fr\/blog\/a-guide-to-fundamental-display-operations-on-stm32","title":{"rendered":"Guide des op\u00e9rations fondamentales d&rsquo;affichage sur STM32"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #002175;color:#002175\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #002175;color:#002175\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/riverdi.com\/fr\/blog\/a-guide-to-fundamental-display-operations-on-stm32\/#Controle_du_retroeclairage_des_ecrans_Riverdi_STM32\" >Contr\u00f4le du r\u00e9tro\u00e9clairage des \u00e9crans Riverdi STM32<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/riverdi.com\/fr\/blog\/a-guide-to-fundamental-display-operations-on-stm32\/#Modules_Riverdi_STM32_pris_en_charge\" >Modules Riverdi STM32 pris en charge<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/riverdi.com\/fr\/blog\/a-guide-to-fundamental-display-operations-on-stm32\/#Principe_de_controle_du_retroeclairage\" >Principe de contr\u00f4le du r\u00e9tro\u00e9clairage<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/riverdi.com\/fr\/blog\/a-guide-to-fundamental-display-operations-on-stm32\/#Exigences_en_matiere_de_materiel_et_de_logiciel\" >Exigences en mati\u00e8re de mat\u00e9riel et de logiciel<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/riverdi.com\/fr\/blog\/a-guide-to-fundamental-display-operations-on-stm32\/#Exemple_de_configuration_PWM\" >Exemple de configuration PWM<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/riverdi.com\/fr\/blog\/a-guide-to-fundamental-display-operations-on-stm32\/#Plage_de_luminosite_et_signification\" >Plage de luminosit\u00e9 et signification<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/riverdi.com\/fr\/blog\/a-guide-to-fundamental-display-operations-on-stm32\/#Reglage_de_la_luminosite_en_cours_de_fonctionnement\" >R\u00e9glage de la luminosit\u00e9 en cours de fonctionnement<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/riverdi.com\/fr\/blog\/a-guide-to-fundamental-display-operations-on-stm32\/#Rotation_de_lecran_sur_les_ecrans_STM32\" >Rotation de l&rsquo;\u00e9cran sur les \u00e9crans STM32<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/riverdi.com\/fr\/blog\/a-guide-to-fundamental-display-operations-on-stm32\/#Rotation_de_lecran_avec_LVGL\" >Rotation de l&rsquo;\u00e9cran avec LVGL<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/riverdi.com\/fr\/blog\/a-guide-to-fundamental-display-operations-on-stm32\/#Initialisation_LVGL_rendu_PARTIEL_rotation\" >Initialisation LVGL (rendu PARTIEL + rotation)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/riverdi.com\/fr\/blog\/a-guide-to-fundamental-display-operations-on-stm32\/#Rappel_de_rincage_rotation_logicielle_dans_le_framebuffer_du_LTDC\" >Rappel de rin\u00e7age (rotation logicielle dans le framebuffer du LTDC)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/riverdi.com\/fr\/blog\/a-guide-to-fundamental-display-operations-on-stm32\/#Resultat\" >R\u00e9sultat<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/riverdi.com\/fr\/blog\/a-guide-to-fundamental-display-operations-on-stm32\/#Rotation_de_lecran_sur_STM32_avec_TouchGFX\" >Rotation de l&rsquo;\u00e9cran sur STM32 avec TouchGFX<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/riverdi.com\/fr\/blog\/a-guide-to-fundamental-display-operations-on-stm32\/#Concept_de_rotation_TouchGFX\" >Concept de rotation TouchGFX<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/riverdi.com\/fr\/blog\/a-guide-to-fundamental-display-operations-on-stm32\/#Activation_de_la_rotation_de_lecran_dans_TouchGFX_designer\" >Activation de la rotation de l&rsquo;\u00e9cran dans TouchGFX designer<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/riverdi.com\/fr\/blog\/a-guide-to-fundamental-display-operations-on-stm32\/#Resume\" >R\u00e9sum\u00e9<\/a><\/li><\/ul><\/nav><\/div>\n<p>Le contr\u00f4le du r\u00e9tro\u00e9clairage et la rotation de l&rsquo;\u00e9cran sont des op\u00e9rations d&rsquo;affichage essentielles qui ont un impact direct sur le comportement du syst\u00e8me dans les conceptions bas\u00e9es sur le STM32. Elles sont ind\u00e9pendantes de la logique de l&rsquo;application, mais \u00e9troitement li\u00e9es \u00e0 la configuration du mat\u00e9riel et aux capacit\u00e9s du cadre graphique. <\/p>\n<p>Dans cet article, nous expliquons comment les modules d&rsquo;affichage Riverdi STM32 mettent en \u0153uvre le contr\u00f4le du r\u00e9tro\u00e9clairage bas\u00e9 sur le PWM en utilisant le TIM15 et un pilote de LED d\u00e9di\u00e9, et comment la rotation de l&rsquo;\u00e9cran est g\u00e9r\u00e9e diff\u00e9remment dans les projets LVGL et TouchGFX. L&rsquo;accent est mis sur les d\u00e9tails pratiques de la mise en \u0153uvre et sur la s\u00e9paration architecturale. <\/p>\n<h2><span class=\"ez-toc-section\" id=\"Controle_du_retroeclairage_des_ecrans_Riverdi_STM32\"><\/span>Contr\u00f4le du r\u00e9tro\u00e9clairage des \u00e9crans Riverdi STM32<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Le contr\u00f4le du r\u00e9tro\u00e9clairage est l&rsquo;une des op\u00e9rations les plus fondamentales lorsque l&rsquo;on travaille avec des \u00e9crans embarqu\u00e9s. Contrairement au rendu graphique ou \u00e0 la gestion du toucher, le <strong>contr\u00f4le du r\u00e9tro\u00e9clairage est ind\u00e9pendant du cadre de l&rsquo;interface graphique<\/strong> et ne d\u00e9pend pas du fait que l&rsquo;application utilise LVGL, TouchGFX ou une autre pile graphique. <\/p>\n<p>Sur les modules d&rsquo;affichage Riverdi bas\u00e9s sur le STM32, la luminosit\u00e9 du r\u00e9tro\u00e9clairage est contr\u00f4l\u00e9e \u00e0 l&rsquo;aide d&rsquo;un <strong>signal PWM mat\u00e9riel,<\/strong> g\u00e9n\u00e9r\u00e9 par un timer STM32.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Modules_Riverdi_STM32_pris_en_charge\"><\/span>Modules Riverdi STM32 pris en charge<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>La m\u00e9thode d\u00e9crite dans cet article s&rsquo;applique aux modules d&rsquo;affichage Riverdi STM32 tels que :<\/p>\n<ul>\n<li>RVT121<\/li>\n<li>RVT101<\/li>\n<li>RVT70<\/li>\n<li>RVT50<\/li>\n<\/ul>\n<p>Le m\u00eame principe peut \u00eatre utilis\u00e9 sur d&rsquo;autres plateformes Riverdi STM32 qui exposent une entr\u00e9e de r\u00e9tro\u00e9clairage contr\u00f4l\u00e9e par PWM.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Principe_de_controle_du_retroeclairage\"><\/span>Principe de contr\u00f4le du r\u00e9tro\u00e9clairage<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Dans les modules d&rsquo;affichage Riverdi bas\u00e9s sur le STM32, le microcontr\u00f4leur ne pilote pas directement le r\u00e9tro\u00e9clairage des LED. Au lieu de cela, le STM32 g\u00e9n\u00e8re un <strong>signal de commande PWM<\/strong>, qui est envoy\u00e9 dans un <strong>circuit de pilotage<\/strong> d\u00e9di\u00e9 <strong>au r\u00e9tro\u00e9clairage des LED.<\/strong> <\/p>\n<p>Le pilote de r\u00e9tro\u00e9clairage est une source de courant constant, con\u00e7ue pour r\u00e9guler le courant circulant \u00e0 travers les cha\u00eenes de LED. Le signal PWM ne module pas directement la tension des LED. Il contr\u00f4le plut\u00f4t le cycle de travail effectif du pilote, ce qui permet au courant moyen des DEL de varier entre 0 et 100 % de sa valeur nominale.  <\/p>\n<p>L&rsquo;architecture peut \u00eatre r\u00e9sum\u00e9e comme suit :<\/p>\n<ul>\n<li>Le timer du STM32 (par exemple, TIM15) g\u00e9n\u00e8re un signal PWM.<\/li>\n<li>Le signal PWM est achemin\u00e9 vers l&rsquo;entr\u00e9e du pilote du r\u00e9tro\u00e9clairage.<\/li>\n<li>Le pilote de r\u00e9tro\u00e9clairage r\u00e9gule le courant des LED.<\/li>\n<li>e rapport cyclique du signal PWM d\u00e9termine la luminosit\u00e9 effective.<\/li>\n<\/ul>\n<p>Cela signifie que :<\/p>\n<ul>\n<li>La fr\u00e9quence PWM est d\u00e9finie par la configuration du timer.<\/li>\n<li>La luminosit\u00e9 est proportionnelle au cycle de travail PWM.<\/li>\n<li>Le courant de la LED est toujours r\u00e9gul\u00e9 par le pilote, et non par le GPIO du MCU.<\/li>\n<\/ul>\n<p>Cycle d&rsquo;utilisation plus \u00e9lev\u00e9 \u2192 courant moyen des LED plus \u00e9lev\u00e9 \u2192 \u00e9cran plus lumineux<\/p>\n<p>Cycle d&rsquo;utilisation plus faible \u2192 courant moyen des LED plus faible \u2192 affichage moins lumineux<\/p>\n<p>Les DEL sont aliment\u00e9es par une source de courant r\u00e9gul\u00e9e :<\/p>\n<ul>\n<li>le contr\u00f4le de la luminosit\u00e9 est lin\u00e9aire et stable,<\/li>\n<li>La dur\u00e9e de vie des LED est prot\u00e9g\u00e9e,<\/li>\n<li>le comportement thermique est pr\u00e9visible,<\/li>\n<li>reste \u00e9lev\u00e9 sur toute la plage de fonctionnement.<\/li>\n<\/ul>\n<p>Cette approche permet<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>contr\u00f4le souple de la luminosit\u00e9,<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>faible perte de puissance,<\/li>\n<li>une r\u00e9gulation correcte du courant du r\u00e9tro\u00e9clairage LED,<\/li>\n<li>une ind\u00e9pendance mat\u00e9rielle totale par rapport au cadre de l&rsquo;interface graphique.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Exigences_en_matiere_de_materiel_et_de_logiciel\"><\/span>Exigences en mati\u00e8re de mat\u00e9riel et de logiciel<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><img decoding=\"async\" class=\"alignnone wp-image-128927 size-full\" src=\"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_1-1.png\" alt=\"\" width=\"826\" height=\"480\" srcset=\"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_1-1.png 826w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_1-1-300x174.png 300w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_1-1-768x446.png 768w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_1-1-600x349.png 600w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_1-1-64x37.png 64w\" sizes=\"(max-width: 826px) 100vw, 826px\" \/><\/p>\n<p>Avant de r\u00e9gler le niveau de r\u00e9tro\u00e9clairage, assurez-vous que<\/p>\n<ul>\n<li>l&rsquo;\u00e9cran est correctement connect\u00e9 au module STM32,<\/li>\n<li>la carte est connect\u00e9e \u00e0 un PC \u00e0 l&rsquo;aide de ST-Link,<\/li>\n<li>le projet est construit en utilisant un mod\u00e8le logiciel support\u00e9 (LVGL ou TouchGFX).<\/li>\n<\/ul>\n<p>Aucune modification de la configuration du cadre de l&rsquo;interface graphique n&rsquo;est n\u00e9cessaire pour le contr\u00f4le du r\u00e9tro\u00e9clairage.<\/p>\n<p><strong>Minuterie utilis\u00e9e pour le contr\u00f4le du r\u00e9tro\u00e9clairage<\/strong><\/p>\n<p>Sur les modules d&rsquo;affichage Riverdi STM32, le r\u00e9tro\u00e9clairage est contr\u00f4l\u00e9 \u00e0 l&rsquo;aide de :<\/p>\n<ul>\n<li><strong>TIM15<\/strong> (sur les infrastructures U5 et H7)<\/li>\n<li>Sortie PWM mat\u00e9rielle<\/li>\n<li>Canal 1<\/li>\n<\/ul>\n<p>La configuration PWM se trouve dans le fichier de projet tim.c, dans la fonction <strong>MX_TIM15_Init().<\/strong><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Exemple_de_configuration_PWM\"><\/span>Exemple de configuration PWM<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Le canal PWM est configur\u00e9 \u00e0 l&rsquo;aide des structures HAL standard du STM32 :<\/p>\n<pre style=\"white-space: break-spaces; padding: 15px; border: solid 1px; word-wrap: break-word; background-color: #f2f6ff;\">sConfigOC.OCMode = TIM_OCMODE_PWM1 ;\n\nsConfigOC.Pulse = 998 ;\n\nsConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH ;\nsConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH ;\nsConfigOC.OCFastMode = TIM_OCFAST_DISABLE ;\nsConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET ;\nsConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET ;\n\nif (HAL_TIM_PWM_ConfigChannel(&amp;htim15, &amp;sConfigOC, TIM_CHANNEL_1) !=\nHAL_OK)\n{\nError_Handler() ;\n}<\/pre>\n<p>Le param\u00e8tre le plus important est sConfigOC.Pulse.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Plage_de_luminosite_et_signification\"><\/span>Plage de luminosit\u00e9 et signification<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>La luminosit\u00e9 du r\u00e9tro\u00e9clairage est contr\u00f4l\u00e9e par le cycle de travail PWM :<\/p>\n<ul>\n<li><strong>0<\/strong> \u2192 r\u00e9tro\u00e9clairage OFF<\/li>\n<li> <strong> 998<\/strong> \u2192 luminosit\u00e9 maximale<\/li>\n<\/ul>\n<p>Toute valeur comprise entre 0 et 998 donne un niveau de luminosit\u00e9 proportionnel.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Reglage_de_la_luminosite_en_cours_de_fonctionnement\"><\/span>R\u00e9glage de la luminosit\u00e9 en cours de fonctionnement<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Outre la configuration statique, le niveau de r\u00e9tro\u00e9clairage peut \u00e9galement \u00eatre modifi\u00e9 en cours d&rsquo;ex\u00e9cution en \u00e9crivant directement dans le registre de la minuterie :<\/p>\n<pre style=\"white-space: break-spaces; padding: 15px; border: solid 1px; word-wrap: break-word; background-color: #f2f6ff;\">TIM15-&gt;CCR1 = votre_nouvelle_valeur_d'impulsion ;<\/pre>\n<p>Cela permet :<\/p>\n<ul>\n<li>contr\u00f4le dynamique de la luminosit\u00e9,<\/li>\n<li>la gradation en fonction de la lumi\u00e8re ambiante,<\/li>\n<li>les modes d&rsquo;\u00e9conomie d&rsquo;\u00e9nergie,<\/li>\n<li>effets de fondu en entr\u00e9e et en sortie.<\/li>\n<\/ul>\n<p>Aucune r\u00e9initialisation de l&rsquo;affichage n&rsquo;est n\u00e9cessaire.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Rotation_de_lecran_sur_les_ecrans_STM32\"><\/span>Rotation de l&rsquo;\u00e9cran sur les \u00e9crans STM32<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Contrairement au contr\u00f4le du r\u00e9tro\u00e9clairage, la <strong>rotation de l&rsquo;\u00e9cran n&rsquo;est pas une op\u00e9ration purement mat\u00e9rielle sur le STM32.<\/strong><br \/>\nLe p\u00e9riph\u00e9rique du contr\u00f4leur d&rsquo;\u00e9cran LCD TFT (LTDC) ne prend pas en charge la rotation de l&rsquo;image, ce qui signifie que la rotation doit \u00eatre g\u00e9r\u00e9e au niveau du contr\u00f4leur d&rsquo;\u00e9cran LCD TFT (LTDC). <strong>  au niveau du cadre graphique.<\/strong><\/p>\n<p>La mise en \u0153uvre diff\u00e8re sensiblement selon le cadre d&rsquo;interface graphique choisi.<\/p>\n<p>Cette section explique les deux approches utilis\u00e9es sur les \u00e9crans Riverdi STM32 :<\/p>\n<ul>\n<li><strong>Rotation bas\u00e9e sur LVGL<\/strong><\/li>\n<li><strong>Rotation bas\u00e9e sur TouchGFX<\/strong><\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Rotation_de_lecran_avec_LVGL\"><\/span>Rotation de l&rsquo;\u00e9cran avec LVGL<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Lorsque vous utilisez des modules d&rsquo;affichage Riverdi STM32 avec des panneaux RVB, le p\u00e9riph\u00e9rique LTDC du STM32 transmet les pixels de la m\u00e9moire ligne par ligne. Comme le LTDC ne prend pas en charge la rotation mat\u00e9rielle, le seul moyen fiable de faire pivoter l&rsquo;image est de le faire par logiciel avant que les pixels n&rsquo;atteignent le framebuffer du LTDC. <\/p>\n<p>LVGL supporte la rotation de l&rsquo;affichage via :<br \/>\nlv_display_set_rotation(disp, LV_DISPLAY_ROTATION_xxx) ;<br \/>\no\u00f9 xxx peut \u00eatre 0, 90, 180, ou 270.<\/p>\n<p>Cependant, cet appel met \u00e0 jour le syst\u00e8me de coordonn\u00e9es interne de LVGL et la gestion de la disposition &#8211; il ne fait pas automatiquement pivoter les donn\u00e9es des pixels pour les pipelines RVB bas\u00e9s sur LTDC. Pour cette raison, la rotation des pixels doit \u00eatre g\u00e9r\u00e9e \u00e0 l&rsquo;int\u00e9rieur du callback LVGL flush. <\/p>\n<p><strong>La place de la rotation dans le pipeline LVGL<\/strong><\/p>\n<p>Dans cette configuration :<\/p>\n<ul>\n<li>LVGL rend de petites \u00ab\u00a0tuiles\u00a0\u00bb dans un tampon de travail (px_map) en utilisant le<strong> mode de rendu PARTIEL<\/strong>.<\/li>\n<li>Le rappel de vidage (disp_flush) \u00e9crit les tuiles rendues dans le framebuffer du LTDC.<\/li>\n<li>Si la rotation est activ\u00e9e, le callback flush fait pivoter la tuile avant de l&rsquo;\u00e9crire dans le framebuffer.<\/li>\n<li>Les coordonn\u00e9es tactiles restent coh\u00e9rentes car LVGL conna\u00eet la rotation actuelle de l&rsquo;\u00e9cran.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Initialisation_LVGL_rendu_PARTIEL_rotation\"><\/span>Initialisation LVGL (rendu PARTIEL + rotation)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>L&rsquo;affichage est cr\u00e9\u00e9 et configur\u00e9 dans le fichier lvgl_port_display.c :<\/p>\n<pre style=\"white-space: break-spaces; padding: 15px; border: solid 1px; word-wrap: break-word; background-color: #f2f6ff;\">void lvgl_display_init(void)\n{\ndisp = lv_display_create(MY_DISP_HOR_RES, MY_DISP_VER_RES) ;\n\n__attribut__((section(\".my_ram_d2_data\")))\nstatique uint8_t buf1[288 * 1024] ;\n\nlv_display_set_buffers(disp, (void *)buf1, NULL, sizeof(buf1),\nLV_DISPLAY_RENDER_MODE_PARTIAL) ;\n\n\/* D\u00e9finir la rotation souhait\u00e9e *\/\nlv_display_set_rotation(disp, LV_DISPLAY_ROTATION_90) ;\n\n\/* Enregistrer le callback de rin\u00e7age *\/\nlv_display_set_flush_cb(disp, disp_flush) ;\n}<\/pre>\n<p><img decoding=\"async\" class=\"alignnone wp-image-128933 size-full\" src=\"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_2-1.png\" alt=\"\" width=\"826\" height=\"248\" srcset=\"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_2-1.png 826w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_2-1-300x90.png 300w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_2-1-768x231.png 768w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_2-1-600x180.png 600w, https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_grafika_POMIEDZY-TEKSTY_2-1-64x19.png 64w\" sizes=\"(max-width: 826px) 100vw, 826px\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Rappel_de_rincage_rotation_logicielle_dans_le_framebuffer_du_LTDC\"><\/span>Rappel de rin\u00e7age (rotation logicielle dans le framebuffer du LTDC)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Vous trouverez ci-dessous le rappel de rin\u00e7age utilis\u00e9 pour les \u00e9crans Riverdi STM32 avec LTDC.<br \/>\nIl prend en charge la rotation par :<\/p>\n<ol>\n<li>Transformer la zone de destination via lv_display_rotate_area(), et<\/li>\n<li>Rotation des donn\u00e9es de pixels via lv_draw_sw_rotate() avant de les \u00e9crire dans le framebuffer<br \/>\n.<\/li>\n<\/ol>\n<pre style=\"white-space: break-spaces; padding: 15px; border: solid 1px; word-wrap: break-word; background-color: #f2f6ff;\">static void disp_flush(lv_display_t * display,\nconst lv_area_t * area,\n\nuint8_t * px_map)\n{\nlv_color_format_t cf = lv_display_get_color_format(display) ;\nuint32_t px_size = lv_color_format_get_size(cf) ; \/* RGB565 = 2 octets *\/\n\n\/* Calculer la zone de destination apr\u00e8s la rotation *\/\nlv_area_t rot_area = *area ;\nlv_display_rotate_area(display, &amp;rot_area) ;\n\nint32_t src_w = lv_area_get_width(area) ;\nint32_t src_h = lv_area_get_height(area) ;\n\nuint32_t src_stride = lv_draw_buf_width_to_stride(src_w, cf) ;\nuint32_t fb_stride = lv_draw_buf_width_to_stride(MY_DISP_HOR_RES, cf) ;\n\n\/* Adresse du framebuffer LTDC *\/\nuint8_t * fb = (uint8_t *)hltdc.LayerCfg[0].FBStartAdress ;\nfb += (rot_area.y1 * fb_stride) + (rot_area.x1 * px_size) ;\n\n\/* Maintenance du cache (n\u00e9cessaire lorsque le framebuffer est dans une SDRAM externe) *\/\nSCB_CleanInvalidateDCache() ;\n\nlv_display_rotation_t r = lv_display_get_rotation(display) ;\n\nif(r == LV_DISPLAY_ROTATION_0) {\n\/* Chemin rapide : pas de rotation *\/\nfor(int32_t y = 0 ; y &lt; src_h ; y++) {\nlv_memcpy(fb, px_map, src_stride) ;\npx_map += src_stride ;\n\nfb += fb_stride ;\n}\n} else {\n\/* Rotation de la tuile rendue directement dans le framebuffer *\/\nlv_draw_sw_rotate(px_map, fb,\nsrc_w, src_h,\nsrc_stride, fb_stride,\nr, cf) ;\n}\n\n\/* Notifier \u00e0 LVGL que la vidange est termin\u00e9e *\/\nlv_display_flush_ready(display) ;\n}<\/pre>\n<h3><span class=\"ez-toc-section\" id=\"Resultat\"><\/span>R\u00e9sultat<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Avec cette approche :<\/p>\n<ul>\n<li>l&rsquo;image est physiquement tourn\u00e9e avant la sortie LTDC,<\/li>\n<li>La mise en page et le rendu LVGL restent coh\u00e9rents,<\/li>\n<li>les coordonn\u00e9es tactiles restent align\u00e9es avec l&rsquo;interface utilisateur pivot\u00e9e,<\/li>\n<li>aucune modification de la configuration de la synchronisation LTDC n&rsquo;est n\u00e9cessaire.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Rotation_de_lecran_sur_STM32_avec_TouchGFX\"><\/span>Rotation de l&rsquo;\u00e9cran sur STM32 avec TouchGFX<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Contrairement \u00e0 LVGL,  <strong>TouchGFX g\u00e8re la rotation de l&rsquo;\u00e9cran au niveau du cadre et de la configuration.<\/strong>  Pour la plupart des projets d&rsquo;affichage Riverdi bas\u00e9s sur le STM32, la rotation peut \u00eatre activ\u00e9e  <strong>sans modifier les pilotes d&rsquo;affichage de bas niveau ou le code de gestion du tampon d&rsquo;image.<\/strong><\/p>\n<p>TouchGFX est donc particuli\u00e8rement pratique lorsque :<\/p>\n<ul>\n<li>l&rsquo;orientation de l&rsquo;affichage est connue au moment de la conception,<\/li>\n<li>n&rsquo;a pas besoin d&rsquo;\u00eatre modifi\u00e9e dynamiquement au moment de l&rsquo;ex\u00e9cution,<\/li>\n<li>une approche bas\u00e9e sur la configuration, rapide et maintenable, est pr\u00e9f\u00e9rable.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Concept_de_rotation_TouchGFX\"><\/span>Concept de rotation TouchGFX<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>TouchGFX fait abstraction du pipeline d&rsquo;affichage et le g\u00e8re :<\/p>\n<ul>\n<li>la disposition de la m\u00e9moire tampon,<\/li>\n<li>l&rsquo;orientation du rendu,<\/li>\n<li>les transformations de coordonn\u00e9es,<\/li>\n<li>le mappage de l&rsquo;entr\u00e9e tactile.<\/li>\n<\/ul>\n<p>En cons\u00e9quence :<\/p>\n<ul>\n<li>aucune rotation manuelle des pixels n&rsquo;est n\u00e9cessaire dans le chemin de rin\u00e7age du LTDC,<\/li>\n<li>aucune manipulation personnalis\u00e9e du framebuffer n&rsquo;est n\u00e9cessaire,<\/li>\n<li>La rotation est appliqu\u00e9e de mani\u00e8re coh\u00e9rente pour le rendu et la saisie tactile.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Activation_de_la_rotation_de_lecran_dans_TouchGFX_designer\"><\/span>Activation de la rotation de l&rsquo;\u00e9cran dans TouchGFX designer<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>La rotation de l&rsquo;\u00e9cran est configur\u00e9e directement dans TouchGFX Designer.<\/p>\n<p>L&rsquo;appellation exacte peut diff\u00e9rer l\u00e9g\u00e8rement selon la version de TouchGFX, mais le flux de travail<br \/>\nest coh\u00e9rent.<\/p>\n<p><strong>\u00c9tape 1 &#8211; Ouvrir la configuration de l&rsquo;affichage<\/strong><\/p>\n<p>Dans TouchGFX Designer :<\/p>\n<ol>\n<li>Ouvrez votre projet.<\/li>\n<li>Naviguez jusqu&rsquo;\u00e0 la section <strong>Configuration de l&rsquo;affichage \/ de la carte \/ de l&rsquo;application<\/strong>.<\/li>\n<li>Localisez le param\u00e8tre <strong>Orientation de l&rsquo;affichage<\/strong> ou <strong>Rotation de l&rsquo;\u00e9cran<\/strong>.<\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"Resume\"><\/span>R\u00e9sum\u00e9<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Sur les modules STM32 Riverdi, la luminosit\u00e9 du r\u00e9tro\u00e9clairage est contr\u00f4l\u00e9e par un PWM mat\u00e9riel g\u00e9n\u00e9r\u00e9 par le TIM15 et r\u00e9gul\u00e9 par un pilote de LED \u00e0 courant constant. Le cycle de travail d\u00e9finit la luminosit\u00e9, ind\u00e9pendamment du cadre de l&rsquo;interface graphique, ce qui permet un fonctionnement stable et pr\u00e9visible. <\/p>\n<p>La rotation de l&rsquo;\u00e9cran n&rsquo;est pas support\u00e9e par le mat\u00e9riel LTDC et doit \u00eatre g\u00e9r\u00e9e au niveau de la couche graphique. Dans LVGL, la rotation n\u00e9cessite une transformation logicielle des pixels dans le callback flush. Dans TouchGFX, la rotation est configur\u00e9e au niveau de la structure sans modifier les pilotes d&rsquo;affichage de bas niveau.  <\/p>\n<p>La s\u00e9paration du contr\u00f4le au niveau du mat\u00e9riel et des responsabilit\u00e9s de la couche graphique garantit une architecture propre et un comportement fiable dans les syst\u00e8mes d&rsquo;affichage bas\u00e9s sur le STM32.<\/p>\n<p><iframe style=\"aspect-ratio: 16\/9;\" title=\"\" src=\"https:\/\/www.youtube.com\/embed\/VsqYn-6io9A\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Le contr\u00f4le du r\u00e9tro\u00e9clairage et la rotation de l&rsquo;\u00e9cran sont des op\u00e9rations d&rsquo;affichage essentielles qui ont un impact direct sur le comportement du syst\u00e8me dans les conceptions bas\u00e9es sur le STM32. Elles sont ind\u00e9pendantes de la logique de l&rsquo;application, mais \u00e9troitement li\u00e9es \u00e0 la configuration du mat\u00e9riel et aux capacit\u00e9s du cadre graphique. Dans cet [&hellip;]<\/p>\n","protected":false},"author":3328,"featured_media":128922,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","inline_featured_image":false,"footnotes":""},"categories":[1457],"tags":[],"class_list":["post-129689","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-affichage-101"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Guide des op\u00e9rations fondamentales d&#039;affichage sur STM32 - Riverdi<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/riverdi.com\/fr\/blog\/a-guide-to-fundamental-display-operations-on-stm32\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Guide des op\u00e9rations fondamentales d&#039;affichage sur STM32 - Riverdi\" \/>\n<meta property=\"og:description\" content=\"Le contr\u00f4le du r\u00e9tro\u00e9clairage et la rotation de l&rsquo;\u00e9cran sont des op\u00e9rations d&rsquo;affichage essentielles qui ont un impact direct sur le comportement du syst\u00e8me dans les conceptions bas\u00e9es sur le STM32. Elles sont ind\u00e9pendantes de la logique de l&rsquo;application, mais \u00e9troitement li\u00e9es \u00e0 la configuration du mat\u00e9riel et aux capacit\u00e9s du cadre graphique. Dans cet [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/riverdi.com\/fr\/blog\/a-guide-to-fundamental-display-operations-on-stm32\" \/>\n<meta property=\"og:site_name\" content=\"Riverdi\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/riverdi.displays\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-16T13:00:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_COVER_GUIDE_FUNDAMENTAL_GUIDE_STM32.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Rafa\u0142 F\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@riverdidisplays\" \/>\n<meta name=\"twitter:site\" content=\"@riverdidisplays\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Rafa\u0142 F\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/riverdi.com\\\/fr\\\/blog\\\/a-guide-to-fundamental-display-operations-on-stm32#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/riverdi.com\\\/fr\\\/blog\\\/a-guide-to-fundamental-display-operations-on-stm32\"},\"author\":{\"name\":\"Rafa\u0142 F\",\"@id\":\"https:\\\/\\\/riverdi.com\\\/fr#\\\/schema\\\/person\\\/dac328f88dda36bae87261c19a2e30ef\"},\"headline\":\"Guide des op\u00e9rations fondamentales d&rsquo;affichage sur STM32\",\"datePublished\":\"2026-03-16T13:00:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/riverdi.com\\\/fr\\\/blog\\\/a-guide-to-fundamental-display-operations-on-stm32\"},\"wordCount\":1876,\"image\":{\"@id\":\"https:\\\/\\\/riverdi.com\\\/fr\\\/blog\\\/a-guide-to-fundamental-display-operations-on-stm32#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/riverdi.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/BLOG_COVER_GUIDE_FUNDAMENTAL_GUIDE_STM32.jpg\",\"articleSection\":[\"Affichage 101\"],\"inLanguage\":\"fr-FR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/riverdi.com\\\/fr\\\/blog\\\/a-guide-to-fundamental-display-operations-on-stm32\",\"url\":\"https:\\\/\\\/riverdi.com\\\/fr\\\/blog\\\/a-guide-to-fundamental-display-operations-on-stm32\",\"name\":\"Guide des op\u00e9rations fondamentales d'affichage sur STM32 - Riverdi\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/riverdi.com\\\/fr#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/riverdi.com\\\/fr\\\/blog\\\/a-guide-to-fundamental-display-operations-on-stm32#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/riverdi.com\\\/fr\\\/blog\\\/a-guide-to-fundamental-display-operations-on-stm32#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/riverdi.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/BLOG_COVER_GUIDE_FUNDAMENTAL_GUIDE_STM32.jpg\",\"datePublished\":\"2026-03-16T13:00:51+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/riverdi.com\\\/fr#\\\/schema\\\/person\\\/dac328f88dda36bae87261c19a2e30ef\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/riverdi.com\\\/fr\\\/blog\\\/a-guide-to-fundamental-display-operations-on-stm32#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/riverdi.com\\\/fr\\\/blog\\\/a-guide-to-fundamental-display-operations-on-stm32\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/riverdi.com\\\/fr\\\/blog\\\/a-guide-to-fundamental-display-operations-on-stm32#primaryimage\",\"url\":\"https:\\\/\\\/riverdi.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/BLOG_COVER_GUIDE_FUNDAMENTAL_GUIDE_STM32.jpg\",\"contentUrl\":\"https:\\\/\\\/riverdi.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/BLOG_COVER_GUIDE_FUNDAMENTAL_GUIDE_STM32.jpg\",\"width\":1280,\"height\":600},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/riverdi.com\\\/fr\\\/blog\\\/a-guide-to-fundamental-display-operations-on-stm32#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Front Page\",\"item\":\"https:\\\/\\\/riverdi.com\\\/fr\\\/page-daccueil\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Guide des op\u00e9rations fondamentales d&rsquo;affichage sur STM32\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/riverdi.com\\\/fr#website\",\"url\":\"https:\\\/\\\/riverdi.com\\\/fr\",\"name\":\"Riverdi\",\"description\":\"Global TFT LCD Manufacturer\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/riverdi.com\\\/fr?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/riverdi.com\\\/fr#\\\/schema\\\/person\\\/dac328f88dda36bae87261c19a2e30ef\",\"name\":\"Rafa\u0142 F\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b208bcbc75c8894f7448c2283e1f99dd68d97018826b56edce8aeb3c8c3985ee?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b208bcbc75c8894f7448c2283e1f99dd68d97018826b56edce8aeb3c8c3985ee?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b208bcbc75c8894f7448c2283e1f99dd68d97018826b56edce8aeb3c8c3985ee?s=96&d=mm&r=g\",\"caption\":\"Rafa\u0142 F\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Guide des op\u00e9rations fondamentales d'affichage sur STM32 - Riverdi","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:\/\/riverdi.com\/fr\/blog\/a-guide-to-fundamental-display-operations-on-stm32","og_locale":"fr_FR","og_type":"article","og_title":"Guide des op\u00e9rations fondamentales d'affichage sur STM32 - Riverdi","og_description":"Le contr\u00f4le du r\u00e9tro\u00e9clairage et la rotation de l&rsquo;\u00e9cran sont des op\u00e9rations d&rsquo;affichage essentielles qui ont un impact direct sur le comportement du syst\u00e8me dans les conceptions bas\u00e9es sur le STM32. Elles sont ind\u00e9pendantes de la logique de l&rsquo;application, mais \u00e9troitement li\u00e9es \u00e0 la configuration du mat\u00e9riel et aux capacit\u00e9s du cadre graphique. Dans cet [&hellip;]","og_url":"https:\/\/riverdi.com\/fr\/blog\/a-guide-to-fundamental-display-operations-on-stm32","og_site_name":"Riverdi","article_publisher":"https:\/\/www.facebook.com\/riverdi.displays\/","article_published_time":"2026-03-16T13:00:51+00:00","og_image":[{"width":1280,"height":600,"url":"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_COVER_GUIDE_FUNDAMENTAL_GUIDE_STM32.jpg","type":"image\/jpeg"}],"author":"Rafa\u0142 F","twitter_card":"summary_large_image","twitter_creator":"@riverdidisplays","twitter_site":"@riverdidisplays","twitter_misc":{"\u00c9crit par":"Rafa\u0142 F","Dur\u00e9e de lecture estim\u00e9e":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/riverdi.com\/fr\/blog\/a-guide-to-fundamental-display-operations-on-stm32#article","isPartOf":{"@id":"https:\/\/riverdi.com\/fr\/blog\/a-guide-to-fundamental-display-operations-on-stm32"},"author":{"name":"Rafa\u0142 F","@id":"https:\/\/riverdi.com\/fr#\/schema\/person\/dac328f88dda36bae87261c19a2e30ef"},"headline":"Guide des op\u00e9rations fondamentales d&rsquo;affichage sur STM32","datePublished":"2026-03-16T13:00:51+00:00","mainEntityOfPage":{"@id":"https:\/\/riverdi.com\/fr\/blog\/a-guide-to-fundamental-display-operations-on-stm32"},"wordCount":1876,"image":{"@id":"https:\/\/riverdi.com\/fr\/blog\/a-guide-to-fundamental-display-operations-on-stm32#primaryimage"},"thumbnailUrl":"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_COVER_GUIDE_FUNDAMENTAL_GUIDE_STM32.jpg","articleSection":["Affichage 101"],"inLanguage":"fr-FR"},{"@type":"WebPage","@id":"https:\/\/riverdi.com\/fr\/blog\/a-guide-to-fundamental-display-operations-on-stm32","url":"https:\/\/riverdi.com\/fr\/blog\/a-guide-to-fundamental-display-operations-on-stm32","name":"Guide des op\u00e9rations fondamentales d'affichage sur STM32 - Riverdi","isPartOf":{"@id":"https:\/\/riverdi.com\/fr#website"},"primaryImageOfPage":{"@id":"https:\/\/riverdi.com\/fr\/blog\/a-guide-to-fundamental-display-operations-on-stm32#primaryimage"},"image":{"@id":"https:\/\/riverdi.com\/fr\/blog\/a-guide-to-fundamental-display-operations-on-stm32#primaryimage"},"thumbnailUrl":"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_COVER_GUIDE_FUNDAMENTAL_GUIDE_STM32.jpg","datePublished":"2026-03-16T13:00:51+00:00","author":{"@id":"https:\/\/riverdi.com\/fr#\/schema\/person\/dac328f88dda36bae87261c19a2e30ef"},"breadcrumb":{"@id":"https:\/\/riverdi.com\/fr\/blog\/a-guide-to-fundamental-display-operations-on-stm32#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/riverdi.com\/fr\/blog\/a-guide-to-fundamental-display-operations-on-stm32"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/riverdi.com\/fr\/blog\/a-guide-to-fundamental-display-operations-on-stm32#primaryimage","url":"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_COVER_GUIDE_FUNDAMENTAL_GUIDE_STM32.jpg","contentUrl":"https:\/\/riverdi.com\/wp-content\/uploads\/2026\/03\/BLOG_COVER_GUIDE_FUNDAMENTAL_GUIDE_STM32.jpg","width":1280,"height":600},{"@type":"BreadcrumbList","@id":"https:\/\/riverdi.com\/fr\/blog\/a-guide-to-fundamental-display-operations-on-stm32#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Front Page","item":"https:\/\/riverdi.com\/fr\/page-daccueil"},{"@type":"ListItem","position":2,"name":"Guide des op\u00e9rations fondamentales d&rsquo;affichage sur STM32"}]},{"@type":"WebSite","@id":"https:\/\/riverdi.com\/fr#website","url":"https:\/\/riverdi.com\/fr","name":"Riverdi","description":"Global TFT LCD Manufacturer","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/riverdi.com\/fr?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"https:\/\/riverdi.com\/fr#\/schema\/person\/dac328f88dda36bae87261c19a2e30ef","name":"Rafa\u0142 F","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/b208bcbc75c8894f7448c2283e1f99dd68d97018826b56edce8aeb3c8c3985ee?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/b208bcbc75c8894f7448c2283e1f99dd68d97018826b56edce8aeb3c8c3985ee?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b208bcbc75c8894f7448c2283e1f99dd68d97018826b56edce8aeb3c8c3985ee?s=96&d=mm&r=g","caption":"Rafa\u0142 F"}}]}},"_links":{"self":[{"href":"https:\/\/riverdi.com\/fr\/wp-json\/wp\/v2\/posts\/129689","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/riverdi.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/riverdi.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/riverdi.com\/fr\/wp-json\/wp\/v2\/users\/3328"}],"replies":[{"embeddable":true,"href":"https:\/\/riverdi.com\/fr\/wp-json\/wp\/v2\/comments?post=129689"}],"version-history":[{"count":0,"href":"https:\/\/riverdi.com\/fr\/wp-json\/wp\/v2\/posts\/129689\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/riverdi.com\/fr\/wp-json\/wp\/v2\/media\/128922"}],"wp:attachment":[{"href":"https:\/\/riverdi.com\/fr\/wp-json\/wp\/v2\/media?parent=129689"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/riverdi.com\/fr\/wp-json\/wp\/v2\/categories?post=129689"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/riverdi.com\/fr\/wp-json\/wp\/v2\/tags?post=129689"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}