色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

TouchGFX實現觸摸功能的方法及原理

STM32單片機 ? 來源:STM32單片機 ? 作者:STM32單片機 ? 2022-05-12 13:14 ? 次閱讀

1.引言

越來越多的智能設備會在 MCU 上實現圖形界面,而 TouchGFX 是專門用于 ST MCU上的圖形界面設計軟件,使圖形界面在 MCU 上能達到類似智能手機的顯示效果。TouchGFX 圖形引擎包括三部分:搜集、更新、渲染。其中在搜集階段,圖形引擎從外部環境收集事件,這些事件通常是觸摸和按鈕事件。TouchGFX 采樣并將事件傳遞到應用程序,這樣原始觸摸動作就被轉換為更具體的應用程序的觸摸事件。例如,點擊(用戶在顯示屏上按下或松開手指)、拖動(用戶觸摸顯示屏并在顯示屏上移動手指)、手勢(用戶向一個方向快速移動手指,然后松開)等功能,這些操作都會被圖形引擎識別并轉發給當前活動的 UI 元素。

本文主要介紹 TouchGFX 從顯示器的觸摸控制器讀取觸摸坐標,并將其傳遞給應用程序的方法及原理,使開發者能夠很容易的在 TouchGFX 生成的代碼中添加觸摸功能。

2.TouchGFX 抽象層架構

TouchGFX 引擎通過 實例化了的HAL子類來訪問 HAL。這些子類由 TouchGFX Generator生成,Generator 是創建抽象層的主要工具,可以生成反映 STM32CubeMX 配置的 HAL 部分,以及 CMSIS V1 或 V2 的 OSAL。通常 HAL 的架構如下圖 1 所示。

TouchGFX 抽象層(Abstraction Layer,簡稱 AL)具有一套特殊的職責, 職責要么在AL (HAL)的硬件部分實現,要么在與 TouchGFX Engine 同步的 AL 部分實現,典型的做法是通過 RTOS (OSAL)來實現。圖 2 總結了 TouchGFX AL 的主要職責,其中有一項任務就是報告觸摸與物理按鈕事件,TouchGFX 將原始觸摸動作轉換為具體的觸摸事件,并轉發給當前活動的 UI 元素。

3.觸摸功能實現步驟

要實現觸摸功能,首先需通過 STM32CubeMX 正確配置觸摸控制器和 MCU,并添加相應驅動代碼,保證 MCU 通過 I2C 或其他接口從觸摸控制器讀取信息,最后在TouchController 接口函數中添加相應的實現代碼。

3.1. STM32CubeMX 配置

為了實現與觸摸控制器的通訊,大多數觸摸控制器都會連接至 I2C 總線,因此需要在STM32CubeMX 中對 I2C 外設進行設置。許多 STM32 MCU 具有多個 I2C 外設,因此需選擇正確的 I2C 進行配置,此外還需配置相關 GPIO,圖 3 是 I2C 在 STM32CubeMX 中的配置界面,開發者需要根據觸摸控制器驅動芯片進行正確配置。

配置好 I2C 后,還需添加 I2C 的驅動代碼,如果沒有用于觸摸控制器的驅動代碼,則需要從頭開始編寫。STM32Cube 固件庫中提供了一些 I2C 通訊的驅動程序,開發者可以從中參考相關代碼進行修改使用。根據觸摸控制器的數據手冊,為確保通過讀取寄存器可以獲取觸摸坐標,首先要檢查的是觸摸控制器的 I2C 地址,然后讀取“設備 ID”寄存器,以進行測試,然后測試是否可以從觸摸控制器接收到正確的 x 值和 y 值。

3.2. 在接口函數中添加實現代碼

在渲染新的一幀之前,TouchGFX 引擎從 TouchController 和 ButtonController 接口收集外部輸入。通過引擎將觸摸控制器的坐標轉換為點擊、拖動和手勢事件,并傳遞至應用程序。一些觸摸控制器能夠報告多個觸摸點,TouchGFX 不支持此功能,通常,只需選擇第一個觸摸點。

TouchGFX 引擎在收集輸入時,引擎會調用 tc 對象的 sampleTouch()函數。TouchGFX Generator 會生成一個 TouchController 類,并將接口函數定義為空。在STM32TouchController.hpp 中會聲明了 init()和 sampleTouch()兩個成員函數,開發者需要做的就是在 STM32TouchController.cpp 源文件中添加相應的實現代碼,在 init()函數中添加觸摸控制器的初始化代碼,在 sampleTouch()函數中添加相應實現代碼,將讀取的觸摸坐標值分配給 x 和 y,并返回是否檢測到觸摸。

其中有多種實現 sampleTouch()函數的方法:一種是在 sampleTouch()中輪詢,另一種是基于中斷實現。在 sampleTouch() 中輪詢:通過發送請求并輪詢結果,從硬件觸摸控制器(通常為 I2C) 讀取觸摸狀態和觸摸坐標,默認情況下,該函數每個 tick 時間被調用一次, 如下圖 5 所示。

基于中斷:I2C 讀取命令由定時器定期啟動,或作為對觸摸硬件外部中斷的響應而啟動。圖 6 中 STM32TouchController.cpp 代碼顯示了 sampleTouch 如何在 RTOS 的系統中實現。當觸摸事件產生時,I2C 會產生中斷,并將數據通過消息隊列或全局變量提供給STM32TouchController。

小結

本文介紹了 TouchGFX 從顯示器的觸摸控制器讀取觸摸坐標,并將其傳遞給應用程序的方法及原理。通過 STM32CubeMX 來初始化 I2C 外設,添加相應的驅動代碼,然后在STM32TouchController.cpp 源文件中實現 init()和 sampleTouch()函數,開發者就能夠很容易的為 TouchGFX 工程添加觸摸功能。

原文標題:工程師筆記|基于 TouchGFX 生成的代碼中添加觸摸功能的方法

文章出處:【微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。

審核編輯:湯梓紅


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • ST
    ST
    +關注

    關注

    32

    文章

    1149

    瀏覽量

    129516
  • 觸摸
    +關注

    關注

    8

    文章

    199

    瀏覽量

    64606
  • TouchGFX
    +關注

    關注

    1

    文章

    42

    瀏覽量

    13400

原文標題:工程師筆記|基于 TouchGFX 生成的代碼中添加觸摸功能的方法

文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何添加觸摸屏驅動到TouchGFX中?

    使用STM32CubeMX移植TouchGFX 一文中介紹了如何用TouchGFX點亮屏幕,但是此時屏幕還沒有觸摸功能。下面將介紹如何添加觸摸
    的頭像 發表于 10-09 14:41 ?2440次閱讀

    TouchGFX開發(2)----觸摸屏幕組件點亮LED

    了解如何使用 TouchGFX 配置屏幕,添加觸摸按鈕,并通過按鈕控制板載 LED 的狀態。
    的頭像 發表于 11-09 15:25 ?1608次閱讀
    <b class='flag-5'>TouchGFX</b>開發(2)----<b class='flag-5'>觸摸</b>屏幕組件點亮LED

    將程序通過touchgfx designer下載到開發板,無法實現觸摸功能怎么處理?

    用NUCLEO-G071RB和X-NUCLEO-GFX01M1做觸摸顯示實驗,希望點擊按鈕能跳轉到相關界面,在touchgfx designer模擬仿真可以實現,但是將程序通過touchgfx
    發表于 03-25 06:33

    TouchGFX中Callback模板實現原理

    interaction 中給按鍵添加響應;或者創建多個界面,在界面間進行切換;這些功能由 designer 幫我們自動生成代碼實現了,那與之對應的功能響應代碼具體是如何實現的呢?
    發表于 09-11 06:16

    LPC4353 TouchGFX

    LPC4353 TouchGFX,觸摸屏代碼。
    發表于 03-17 08:18 ?15次下載

    如何在TouchGFX框架下實現校準電阻觸摸屏?

    1. 摘要 本文檔主要介紹,如何在TouchGFX框架下,實現電阻式觸摸屏的校準。分兩種方法介紹,三點校準和四點校準。以800*480電阻屏為例。 2. 準備工作 可以正常運行的
    的頭像 發表于 01-21 10:14 ?4752次閱讀
    如何在<b class='flag-5'>TouchGFX</b>框架下<b class='flag-5'>實現</b>校準電阻<b class='flag-5'>觸摸</b>屏?

    TouchGFX中Callback模板實現原理

    ,TouchGFX是用C++編寫的,借助C++的模板特性,定義了一組Callback模板,基于此模板來實現響應的功能。
    發表于 08-04 18:51 ?15次下載
    <b class='flag-5'>TouchGFX</b>中Callback模板<b class='flag-5'>實現</b>原理

    touchGFX手環滾動菜單的實現(三)

    touchGFX手環滾動菜單的實現(三)文章目錄touchGFX手環滾動菜單的實現(三)前言1.實現原理分析2.代碼
    發表于 12-27 19:01 ?9次下載
    <b class='flag-5'>touchGFX</b>手環滾動菜單的<b class='flag-5'>實現</b>(三)

    基于 TouchGFX 生成的代碼中添加觸摸功能方法

    基于 TouchGFX 生成的代碼中添加觸摸功能方法
    的頭像 發表于 10-27 09:21 ?970次閱讀
    基于 <b class='flag-5'>TouchGFX</b> 生成的代碼中添加<b class='flag-5'>觸摸</b><b class='flag-5'>功能</b>的<b class='flag-5'>方法</b>

    使用TouchGFX二進制翻譯(Binary Translation)功能實現動態更新翻譯

    電子發燒友網站提供《使用TouchGFX二進制翻譯(Binary Translation)功能實現動態更新翻譯.pdf》資料免費下載
    發表于 09-19 16:48 ?1次下載
    使用<b class='flag-5'>TouchGFX</b>二進制翻譯(Binary Translation)<b class='flag-5'>功能</b><b class='flag-5'>實現</b>動態更新翻譯

    STM32GUI使用TouchGFX二進制字體(Binary Font)功能實現字體動態更新

    電子發燒友網站提供《STM32GUI使用TouchGFX二進制字體(Binary Font)功能實現字體動態更新.pdf》資料免費下載
    發表于 09-19 16:53 ?3次下載
    STM32GUI使用<b class='flag-5'>TouchGFX</b>二進制字體(Binary Font)<b class='flag-5'>功能</b><b class='flag-5'>實現</b>字體動態更新

    STM32GUI使用TouchGFX動態圖片功能實現動態更換表盤背景功能

    電子發燒友網站提供《STM32GUI使用TouchGFX動態圖片功能實現動態更換表盤背景功能.pdf》資料免費下載
    發表于 09-19 16:54 ?5次下載
    STM32GUI使用<b class='flag-5'>TouchGFX</b>動態圖片<b class='flag-5'>功能</b><b class='flag-5'>實現</b>動態更換表盤背景<b class='flag-5'>功能</b>

    實戰經驗 | STM32GUI TouchGFX 屏幕切換功能簡介

    關鍵詞:GUI,TouchGFX,Transition 目錄預覽 1、引言 2、TouchGFX屏幕切換功能 3、小結 01 引言 TouchGFX 是專用于 STM32 的圖形界面設
    的頭像 發表于 11-09 10:05 ?5975次閱讀

    實戰經驗 | TouchGFX 控件附加 ClickListener 功能方法介紹

    Designer 中的 Mixin 功能,從基礎示例 Button Example 出發,為文本框控件添加 ClickListener (Mixin 功能中的一項),并對源代碼進行簡單剖析。期望能幫助客戶更深入地理解 STM32 To
    的頭像 發表于 11-17 17:40 ?1539次閱讀

    單片機的GPIO如何實現觸摸按鍵的功能呢?

    單片機的GPIO如何實現觸摸按鍵的功能呢? 觸摸按鍵是一種使用觸摸電容技術實現的按鍵,它通過利用
    的頭像 發表于 12-07 11:43 ?4949次閱讀
    主站蜘蛛池模板: 亚洲成人综合在线 | 午夜理伦片免费 | 女女破视频在线观看 | 精品视频免费在线观看 | 99久久久免费精品免费 | 糙汉顶弄抽插HHHH | 亚洲精品美女久久777777 | 日本熟妇乱妇熟色A片蜜桃 日本熟妇多毛XXXXX视频 | JIZZ学生13| X8X8拨牐拨牐X8免费视频8午夜 | 国产午夜人成在线视频麻豆 | 窝窝影院午夜看片毛片 | 99pao成人国产永久免费视频 | 网址在线观看你懂我意思吧免费的 | 青年医生插曲 | 久草大| 日韩精品一区二区三区AV在线观看 | 亚洲高清毛片一区二区 | 久久成人伊人欧洲精品AV | 国产精品白浆精子流水合集 | 国产免费怕怕免费视频观看 | 亚洲国产区中文在线观看 | 嫩草成人国产精品 | 精品久久久久久电影网 | 亚洲精品久久久无码一区二区 | 成年人免费在线视频观看 | 亚洲男女羞羞无遮挡久久丫 | 小小水蜜桃3视频在线观看 小向美奈子厨房magnet | 暖暖 免费 高清 日本视频5 | 色偷偷888欧美精品久久久 | 亚洲 欧美 视频 手机在线 | 国产免费福利在线视频 | 午夜国产理论 | 成年人视频免费在线观看 | 国产AV无码成人黄网站免费 | 99国产精品综合AV无码 | 野花高清影视免费观看 | 韩国演艺圈悲惨在线 | 成人五级毛片免费播放 | 天堂网久久 | 国产这里有精品 |