<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      【LVGL】移植篇(正點原子教程)

      引言

      學習 LVGL 的同時,記錄學習過程,分享踩坑經歷。

      LVGL

      下面都是從正點原子的 pptx 中截取下來的,他們寫的很詳細了。

      GUI 簡介

      image

      LVGL 簡介

      image

      LVGL 移植要求

      image

      優化 LVGL 的方法

      image

      LVGL 庫文件

      image

      前置知識

      image

      正點原子移植教程

      正點原子的移植教程非常詳細,他們使用的是 LVGL v8.2 版本的,現在 LVGL v8 版本最高也才到了 v8.4 版本,所以我們可以直接移植 LVGL v8.4 版本的,移植大體上沒有什么區別。

      1. 【正點原子】基礎篇-LVGL移植(準備)
      2. 【正點原子】基礎篇-LVGL移植(無操作系統1)
      3. 【正點原子】基礎篇-LVGL移植(無操作系統2)
      4. 【正點原子】基礎篇-LVGL移植(無操作系統3)
      5. 【正點原子】基礎篇-LVGL移植(無操作系統4)

      踩坑

      屏幕顯示不正常

      解決方法: 在 startup_stm32h743xx.s 文件中將棧大小從 0x400 修改為 0x800。

      屏幕顯示正常觸摸無效

      解決方法: 由于是觸摸的問題,我們就在觸摸上找問題。在 lv_port_indev_template.c 文件中找到以下函數:

      static bool touchpad_is_pressed(void)
      {
          /*Your code comes here*/
          gtxxxx_scan();
          if (gtxxxx_dev.sta & TP_PRES_DOWN) /* 如果檢測到被按下,返回真 */
          {
              return true;
          }
          return false; /* 否則返回假 */
      }
      

      if (gtxxxx_dev.sta & TP_PRES_DOWN)修改為if (gtxxxx_dev.sta & (TP_PRES_DOWN >> 15)),并且將正點原子提供代碼中的TP_PRES_DOWN都改為(TP_PRES_DOWN >> 15)

      附 TOUCH 程序:【LTDC】RGB LCD 電容觸摸屏的配置和程序

      原因: 正點原子提供的程序中對于狀態位 sta 的處理是這樣的:

      #define TP_PRES_DOWN 0x8000 /* 觸屏被按下 */
      #define TP_CATH_PRES 0x4000 /* 有按鍵按下了(兼容電阻屏) */
      
      /* 狀態位賦值 */
      gtxxxx_rd_reg(GTXXXX_GSTID_REG, &mode, 1);        /* 讀取觸摸點的狀態 */
      temp = 0XFFFF << (mode & 0XF); /* 將點的個數轉換為1的位數,匹配tp_dev.sta定義 */
      gtxxxx_dev.sta = (~temp) | TP_PRES_DOWN;
      
      /* 狀態位恢復 */
      if ((mode & 0X8F) == 0X80) /* 無觸摸點按下 */
      {
          if (gtxxxx_dev.sta & (TP_PRES_DOWN >> 15)) /* 之前是被按下的 */
          {
              gtxxxx_dev.sta &= ~(TP_PRES_DOWN >> 15); /* 標記按鍵松開 */
          }
          else /* 之前就沒有被按下 */
          {
              gtxxxx_dev.x[0] = 0xffff;
              gtxxxx_dev.y[0] = 0xffff;
              gtxxxx_dev.sta &= 0XE000; /* 清除點有效標記 */
          }
      }
      

      通過調試,我們可以知道,當只有一個觸點按下的時候:
      tamp 的值為0xFFFE,即1111 1111 1111 1111 1111 1111 1111 1110
      則~tamp 的值為0x0001,即0000 0000 0000 0001
      TP_PRES_DOWN 的值為0x8000,即1000 0000 0000 0000
      (~temp) | TP_PRES_DOWN 的值即為1000 0000 0000 0001
      sta & TP_PRES_DOWN 的值即為0000 0000 0000 0000
      那么這個按鍵按下的接口函數中的 if 將永遠都不會進入。

      static bool touchpad_is_pressed(void)
      {
          /*Your code comes here*/
          gtxxxx_scan();
          if (gtxxxx_dev.sta & TP_PRES_DOWN) /* 如果檢測到被按下,返回真 */
          {
              return true;
          }
          return false; /* 否則返回假 */
      }
      

      故采取將TP_PRES_DOWN >> 15右移15位的方法,得到0000 0000 0000 0001,使其可以正常運行。
      當然,找到問題以后,解決的方法有很多,看你怎么選擇。

      總結

      移植篇就到此結束了,跟著正點原子的視頻來移植,不會很困難,就是有點繁瑣,不過前提是你要非常熟悉文件管理相關的內容,才不至于眼花繚亂。主要就是踩的這兩個坑,特別是第二個坑花了我點時間去尋找,網上搜索也沒有答案,故在此分享出來,給需要幫助的人看到是最好的。

      博客導航

      博客導航

      posted @ 2025-11-04 10:52  膝蓋中箭衛兵  閱讀(10)  評論(0)    收藏  舉報
      ORCID iD icon https://orcid.org/0000-0001-5102-772X
      主站蜘蛛池模板: 鲁一鲁一鲁一鲁一澡| 亚洲精品一二三中文字幕| 久久五十路丰满熟女中出| 国产日韩av二区三区| 亚洲暴爽av天天爽日日碰| 国产制服丝袜无码视频| 国产精品美女久久久久久麻豆| 色综合久久久久综合体桃花网| 88国产精品视频一区二区三区| 国产成人一区二区三区免费| 粉嫩蜜臀av一区二区三区| 亚洲日本高清一区二区三区| 亚洲国产精品久久久天堂麻豆宅男| 一区二区三区不卡国产| 欧美精品国产综合久久| 日韩精品一区二区三区影院| 久久国产精品伊人青青草| 搡老熟女老女人一区二区| 亚洲18禁一区二区三区| 波多野结衣一区二区三区高清av | 国产精品99久久久久久www| 这里只有精品免费视频 | 亚洲综合伊人五月天中文| 中文字幕日韩有码国产| 99久久精品费精品国产一区二 | 九九热精品视频免费在线| 成人午夜大片免费看爽爽爽| 欧美老熟妇乱子伦牲交视频| 久久久久影院色老大2020| 狠狠干| 亚洲欧美日韩综合久久| 无码人妻丰满熟妇区毛片| 日韩乱码视频一区二区三区| 国产精品多p对白交换绿帽| 2019国产精品青青草原| 乱女乱妇熟女熟妇综合网| 久久99精品久久久大学生| 国产亚洲久久久久久久| 明水县| 国产成人av电影在线观看第一页| 无码人妻一区二区三区线|