精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

STemwin圖形庫移植與運用

DS小龍哥-嵌入式技術 ? 來源:DS小龍哥-嵌入式技術 ? 作者:DS小龍哥-嵌入式技 ? 2022-02-28 14:09 ? 次閱讀

?一、環境介紹

主控MCU: STM32F103ZET6

STM32程序開發IDE: keil5

STM32程序風格: 采用寄存器方式開發,注釋齊全,執行效率高,方便移植

硬件包含: 一塊STM32F103ZET6開發板、一個3.5寸TFT電阻觸摸顯示屏(使用的是正點原子的3.5寸電阻觸摸屏)

前言:STemwin圖形界面庫比較吃內存的,一般跑圖形界面庫都需要配一塊SRAM,M3系列官方推薦頻率是72MHZ(當前也是可以超頻的),界面不是非常復雜,刷新要求不是特別高的情況下,跑起來還是不錯的。

這篇文章主要講解Stemwin的移植與基本使用。

下面示例圖是為了講解STemwin基本用法,做的界面兩個例子。 QQ應用的界面完成之后加上網卡就可以完成局域網之間多個設備之間聊天了。

STemwin圖形庫移植與運用

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.pngSTemwin圖形庫移植與運用

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.pngSTemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

二、STemwin介紹

2.1 emWin介紹

emWin是由德國SEGGER公司開發,可為圖形LCD設計提供高級支持,極大簡化了LCD設計。為恩智浦ARM微控制器用戶免費提供的emWin圖形庫。

在國內做嵌入式系統的大部分都使用emwin,其簡單來說就是一套圖形庫。

電子硬件開發,常常要為設計一個良好的UI傷透腦筋,寫很多的代碼也不盡人意,還要不斷調試,emwin正是解決這種用戶界面需求的圖形庫,只要在你的設計中嵌入這種圖形庫,就能很方便使用里面的模塊化設計,既能提高設計界面圖形質量,還大大的減少開發時間。

SEGGER公司的產品

Segger微控制器股份有限公司開發與發布軟件開發工具及ANSI?C軟件組件(中間件)給嵌入式系統使用并應用在許多工業應用中,如通信、醫療儀器、消費性電子產品、汽車工業及工業自動化設備。

  1. EmWin是SEGGER公司設計用來提供一個有效率的、與處理器與顯示控制器無關的、可應用在任何圖形顯示器的圖形用戶界面.
  2. J-Link是SEGGER公司為支持仿真ARM內核芯片推出的仿真器
  3. emOS是SEGGER公司開發的一個實時操作系統,使用最小的資源提供一個完整的多任務系統,被設計應用在許多難處理的即時應用當中。
  4. emFile是SEGGER公司開發的嵌入式文件系統,支持FAT12、FAT16及FAT32。已經在保持最高速的前提下,優化了emFile,使之在RAM和ROM里占最小的存儲器空間
  5. embos/ip是Segger開發的嵌入式TCP/IP程序驅動庫。它是一個與中央處理器架構無關、且高效能的TCP/IP驅動庫,在速度上、功能上及最小結構上已經做了最佳的優化。
  6. emUSB?是Segger開發的嵌入式USB協議棧。采用ANSI?C的格式撰寫,具有大批量通信傳輸和集成諸如MSD、CDC或HID設備類等特點。

拓展資料:

嵌入式系統無疑是當前最熱門最有發展前途的IT應用領域之一。

嵌入式系統用在一些特定專用設備上,通常這些設備的硬件資源(如處理器、存儲器等)非常有限,并且對成本很敏感,有時對實時響應要求很高等。特別是隨著消費家電的智能化,嵌入式更顯重要。像我們平常見到的手機、PDA、電子字典、可視電話、VCD/DVD/MP3 Player、數字相機(DC)、數字攝像機(DV)、U-Disk、機頂盒(Set Top Box)、高清電視(HDTV)、游戲機、智能玩具、交換機、路由器、數控設備或儀表、汽車電子、家電控制系統、醫療儀器、航天航空設備等等都是典型的嵌入式系統。

Keil軟件

Keil公司是一家業界領先的微控制器(MCU)軟件開發工具的獨立供應商。

Keil公司由兩家私人公司聯合運營,分別是德國慕尼黑的Keil Elektronik GmbH和美國德克薩斯的Keil Software Inc。Keil公司制造和銷售種類廣泛的開發工具,包括ANSI C編譯器、宏匯編程序、調試器、連接器、庫管理器、固件和實時操作系統核心(real-time kernel)。

Keil 官網雖然沒有發布中文版本,但是Keil 系列軟件卻被中國80%以上的軟硬件工程師使用,但凡與電子相關的專業,都會開始從單片機和計算機編程開始學習,而學習單片機自然會用到Keil 軟件。國內由米爾科技、億道電子、英倍特提供Keil 的銷售和技術支持服務,他們是ARM公司合作伙伴,也是國內領先的嵌入式解決方案提供商。

2.2 UCGUI與STemwin介紹

說起UCGUI得先從UCOS說起,在國內做嵌入式系統的,開始入門OS的時候,大家應該都會選擇uC/OS,主要是因為代碼開源且資料眾多。由于uC/OS的原因大家也一定接觸了uC/GUI的嵌入式圖形軟件庫。其實uC/Gui的核心代碼并不是Micrium公司開發的,而是Segger公司為Micrium公司定制的圖形軟件庫,當然也是基于Segger公司的emwin圖形軟件庫開發的。所有說uC/GUI和emwin的使用方法沒有區別。

在以前較舊的版本程序中uC/Gui的源代碼是開源的(可以在網上能夠找到),但是新版本的程序emWin和uC/gui只對用戶提供庫文件,是不開源的。

Segger 除了向Micrium公司提供定制的uC/GUI版本,還向其他的IC廠家提供定制服務,比如: 向ST 公司出售了emWin 的版權,從而ST公司也得到了定制版的emWin,然后改了名字叫 STemWin。當用戶在 STM32 芯片上使用 emWin 軟件庫時,是不需要向 emWin 或 ST 公司付費的。還有NXP公司也使用了emWin的圖形庫,大家使用NXP芯片的時候同樣也不需要支付費用。

總而言之,uC/GUI和STemWin都是 Segger 公司的 emWin 產品,而且它們的版本編號是統一的,如 uC/GUI 目前最新版本命名為uC-GUI V5.24, STemWin 最新版本命名為STemWin Library V5.24,emWin 最新版本則為 emWin V5.24,所以,要比較這三個軟件庫功能上的區別,只需要看它們的版本號就可以了。

在選擇的時候,雖然功能上沒有區別,但因為版權付費問題,在實際使用時就需要根據自己的平臺來選擇。如果我們使用的是 STM32 開發平臺,自然我們選擇的是STemWin;如果我們使用的是NXP的平臺,我們就是用為NXP定制的emwim。

在使用特定的平臺,我們也需要選擇定制的emWin,在STemWin里有一個檢測機制確定代碼所運行的平臺,若是 STM32 芯片,則運行正常,若非 STM32 芯片,就不能正常使用了。同樣,NXP也是一樣的機制。

如果使用的芯片沒有授權emWin的版權,可以推薦使用UCGUI。

emWin官方下載地址:emWin

STemWin官方下載地址:STM32CubeF1 - STM32Cube MCU Package for STM32F1 series (HAL, Low-Layer APIs and CMSIS, USB, TCP/IP, File system, RTOS, Graphic - and examples running on ST boards) - STMicroelectronics

GCGUI官網下載地址:https://www.micrium.com/

2.3 為什么要學習圖形界面框架?

很多產品需要人機交互,人機交互大多數是通過LCD來完成的,所以就需要我們在應用中設計LCD交互界面,簡單的UI界面我們可以自己寫代碼完成,但是比較復雜、絢麗的界面自己來做就比較困難了。STemWin中提供了很多的控件,我們可以使用這些控件來完成復雜的界面設計。

STemwin圖形庫移植與運用

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

2.4 emwin下載地址

emwin下載地址: SEGGER - The Embedded Experts - Downloads - emWin

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

三、STemwin基本移植(不帶操作系統)

3.1 獲取keil軟件自帶的emwin庫

在keil軟件的安裝目錄下,自帶了emwin的所有資料,適合NXP(恩智浦)單片機使用。

路徑: \ARM\Segger\emWin

STemwin圖形庫移植與運用

?

3.2 下載STemwin圖形界面庫

STemwin適合在ST意法半導體的芯片上使用,Stemwin的資料包可直接在ST官網上進行下載。

ST意法半導體官網首頁地址: https://www.st.com

下面是下載的步驟截圖:

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用

?

STemwin圖形庫移植與運用

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

3.3 添加STemwin文件到工程

移植之前,需要先準備一個帶LCD屏驅動、觸摸屏驅動的完整Keil工程。

(1) 在工程目錄下創建一個ST_EMWIN文件夾,用于存放STEMWIN相關的文件

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

(2) 拷貝的目錄

STemwin圖形庫移植與運用

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

inc文件夾從下載的包里直接拷貝過來,不做任何修改。

Config文件夾里留下以下文件:

STemwin圖形庫移植與運用

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

Lib目錄下留下以下文件: (不帶OS的庫文件)

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

(3) 在keil軟件里創建一個新的分組,用于存放STemwin文件。

STemwin圖形庫移植與運用

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

(4) 添加頭文件路徑

STemwin圖形庫移植與運用

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

3.4 屏蔽沒有用到的LCDConf.h頭文件

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

3.5 修改GUIConf.h文件

GUIConf.h是STemwin的核心配置文件,主要配置操作系統、觸摸屏、最大窗口的支持。

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用

?

3.6 修改GUIConf.c文件

GUIConf.c文件配置STemwin運行時需要的內存,如果使用了SRAM外擴內存,可以將數組定義在外部的SRAM空間。

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

3.7 修改GUIDRV_Template.c文件

GUIDRV_Template.c文件是LCD屏的驅動模板文件,需要根據自己的LCD屏驅動進行修改。

主要修改的函數是: 畫點函數、讀點函數。

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

NT35310_Fill(x0,y0,x1,y1,LCD_COLORINDEX);

3.8 修改LCDConf_FlexColor_Template.c文件

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

void LCD_X_Config(void)

{

GUI_DEVICE * pDevice;

pDevice = GUI_DEVICE_CreateAndLink(&GUIDRV_Template_API, GUICC_M565, 0, 0);

LCD_SetSizeEx (0, XSIZE_PHYS , YSIZE_PHYS);

LCD_SetVSizeEx(0, VXSIZE_PHYS, VYSIZE_PHYS);

//觸摸屏校準參數設置

GUI_TOUCH_Calibrate(GUI_COORD_X,0,319,0,319);

GUI_TOUCH_Calibrate(GUI_COORD_Y,0,479,0,479);

//這兩個函數在GUI.h文件的1292行定義

}

GUIDRV_Template_API 變量是在GUI.h的167行定義。

GUI_TOUCH_Calibrate函數是在GUI.h的

3.9 增加觸摸屏底層接口代碼

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

這4個函數原型在GUI.h文件的1404行聲明。

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

在GUIDRV_Template.c文件下面增加這4個觸摸屏的接口函數。

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

#include "touch_xpt2046.h"

void GUI_TOUCH_X_ActivateX(void) { //激活X

}

void GUI_TOUCH_X_ActivateY(void) { //激活Y

}

int GUI_TOUCH_X_MeasureX(void) { //測量X

TOUCH_ReadXY();

return touch.x;

}

int GUI_TOUCH_X_MeasureY(void) { //測量Y

TOUCH_ReadXY();

return touch.y;

}

3.10 添加GUI_X.c文件

觸摸屏底層函數增加之后,再次編譯。

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

這4個函數,在GUI_X.c文件里定義,需要將GUI_X.c文件添加到工程中。

GUI_X.c文件路徑: \en.stemwin\STemWin_Library_V1.2.0\Libraries\STemWinLibrary532\OS\GUI_X.c

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

將GUI_X.c文件拷貝到工程目錄下的ST_EMWIN\Config目錄下。

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

3.11 定時器提供時間基準與輪詢觸摸屏

在STemwin的GUI_X.c文件里,帶有GUI_X_Delay()延時函數,該延時函數是通過OS_TimeMS變量來計算延時的時間,如果需要使用該延時函數,就需要在自己工程的硬件定時器里1ms的頻率自增OS_TimeMS變量,提供時間基準。

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

需要使用觸摸屏,就需要定期調用GUI_TOUCH_Exec()函數,每秒100次的頻率調用。

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

3.13 對移植結果進行基本測試

進行GUI框架初始化之前,需要先開啟CRC時鐘校驗。

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

/*獲取觸摸屏狀態\設置光標位置*/

void Touch_Process(void)

{

GUI_PID_STATE STATE; //該變量為GUI觸屏的x y位置存儲坐標

GUI_TOUCH_GetState(&STATE); //獲取觸摸屏狀態

if(STATE.Pressed == 1) //按下

{

GUI_CURSOR_SetPosition(STATE.x,STATE.y);//設置光標位置

GUI_CURSOR_Show(); //設置顯示光標

}

}

運行效果如下:

STemwin圖形庫移植與運用

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

3.13 測試SEGGER官方DEMO代碼

SEGGER官方提供的DEMO代碼,在ST意法半導體的官網上下載的包里沒有提供,需要去SEGGER官方提供的emwin包里獲取。在keil軟件的安裝目錄下,有完整的emwin包,可以找到DEMO代碼。

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

將GUIDemo文件夾全部拷貝到工程目錄下,并將里面所有的.c文件加到工程中。

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.pngSTemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

四、STemwin基本運用

4.1 GUIBuilder軟件使用

GUIBulider是emwin官方出的軟件,每個版本的emwin都有其對應版本的。

GUIBulider軟件,控件非常齊全,熟練使用 GUIBulider在使用emWin設計GUI界面的時候會起到事半功倍的效果,使用這款軟件就不需要我們自己用C語言編寫界面了,可以在 GUIBulider 中設計好界面,然后導出C程序,十分的方便。

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用

?

GUIBulider生成的代碼只是一個界面框架,程序執行的邏輯代碼需要用戶自己填充。

邏輯代碼比如: 按下按鍵做什么,松開按鍵做什么等等,這些需要用戶自己設計。

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

4.2 STemwin外置中文字庫設置

(1) 制作GBK中文字庫

STemwin圖形庫移植與運用

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

制作好的字庫效果:

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

字庫制作好之后,可以通過文件系統+SD將字庫文件燒寫到板載的W25Q64 FLASH里指定位置,方便后續調用。

(2) 制作ASCII 碼字庫

上面制作了GBK中文字庫,這里還需要制作尺寸一樣的ASCII碼字庫,方便顯示與中文大小相同的英文字母和標點符號。

!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

注意: 最前面有個空格。 一共95個數據。

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

存放到程序里的只能放 12號字體、16號字體、24號字體。 太大的字體Keil軟件存放不了。

超出了24號的字體,可以像GBK中文字庫一樣存放到FLASH W25Q128里,使用的時候在去讀取數據,這樣就不會占用CPU本身的FLASH空間。

(3) 制作好的字庫文件列表

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

(4) 添加ASCII碼字庫和GBK字庫的支持

先將字庫的必要文件添加到工程中: (如果用不到這么多字體可以自己添加要使用的大小)

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

#define GUI_FONTTYPE_PROP_USER \

GUIPROP_X_DispChar, \

(GUI_GETCHARDISTX*)GUIPROP_X_GetCharDistX, \

GUIMONO_GetFontInfo, \

GUIMONO_IsInFont, \

(GUI_GETCHARINFO *)0, \

(tGUI_ENC_APIList*)0

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

QQ登錄界面(中文顯示)

STemwin圖形庫移植與運用

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

QQ登錄框點擊登錄按鈕之后登錄成功的效果

STemwin圖形庫移植與運用

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

4.3 實體按鍵操作界面控件

GUI_SendKeyMsg()函數: 向一個指定的按鍵發送一個狀態消息。

函數原型: void GUI_SendKeyMsg(int Key, int Pressed);

參數

含意

Key

可以是任何可擴展的 ASCII 字符(在 0x20 和 0xFF 之間)或者任何預定義的μC/GUI 信息碼。

Pressed

鍵的狀態(參 GUI_StoreKeyMsg())

示例:

key=KEY_Scanf();

switch(key)

{

case 1:

GUI_SendKeyMsg(GUI_KEY_BACKTAB, 1);//選擇上一個聚焦控件

break;

case 2:

GUI_SendKeyMsg(GUI_KEY_ENTER,1); //回車

break;

case 3:

GUI_SendKeyMsg(GUI_KEY_TAB, 1); //選擇下一個聚焦控件

break;

case 4:

GUI_SendKeyMsg(GUI_KEY_SPACE,1); //空格鍵

break;

default:

/*發送按鈕松開消息*/

GUI_SendKeyMsg(GUI_KEY_BACKTAB,0); //選擇上一個聚焦控件

GUI_SendKeyMsg(GUI_KEY_ENTER,0); //回車

GUI_SendKeyMsg(GUI_KEY_TAB, 0); //選擇下一個聚焦控件

GUI_SendKeyMsg(GUI_KEY_SPACE,0); //空格鍵

break;

}

審核編輯:湯梓紅


?

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

    關注

    3

    文章

    303

    瀏覽量

    27339
  • 設備
    +關注

    關注

    2

    文章

    4473

    瀏覽量

    70540
  • 開發板
    +關注

    關注

    25

    文章

    4945

    瀏覽量

    97197
收藏 人收藏

    評論

    相關推薦

    如何在低成本ARM平臺部署LVGL免費圖形,基于全志T113-i

    本帖最后由 Tronlong創龍科技 于 2024-10-29 10:39 編輯 LVGL簡介 LVGL(Littlev Graphics Library)是一個開源的圖形,主要用于嵌入式
    發表于 10-29 09:55

    使用MSP430圖形時的設計注意事項

    電子發燒友網站提供《使用MSP430圖形時的設計注意事項.pdf》資料免費下載
    發表于 09-03 10:49 ?0次下載
    使用MSP430<b class='flag-5'>圖形</b><b class='flag-5'>庫</b>時的設計注意事項

    手把手帶你移植HAL庫函數

    在嵌入式系統開發中,硬件抽象層(HAL,HardwareAbstractionLayer)的使用可以極大地簡化開發過程,提高代碼的可移植性和維護性。本文將詳細介紹如何快速搞懂HAL移植
    的頭像 發表于 05-18 08:04 ?1681次閱讀
    手把手帶你<b class='flag-5'>移植</b>HAL庫函數

    STemWin522移植R61509V問題求解

    ); 可是現在找遍整個stemwin源碼文件就是找不到 LCDConf_CompactColor_16.h 這些文件; 這些文件在哪里? 謝謝!
    發表于 05-15 06:33

    【Vision Board創客營連載體驗】RA8D1-Vision Board 移植LVGL8.3驅動和觸摸屏驅動代碼

    先說結論:移植LVGL的過程挺順利的,觸摸屏也能正常移植運行,但是目前無法通過觸摸與LVGL界面聯動,原因未知。 移植LVGL8.3.10圖形
    發表于 05-13 19:53

    STemWin移植到STM32上后無法顯示怎么解決?

    最近在玩STemWin,但是移植到STM32上后無法顯示,單步調試的時候進入不了打點函數,我用的是IAR,驅動代碼沒有優化,僅僅是想先用打點函數來實現一下看看效果,后續再做優化,請教一下大神們,這個該怎么解決
    發表于 05-13 07:20

    STemwin究竟需要多大的內存?

    大家有沒有對STemwin特別了解的,STemwin究竟需要多大的內存?就拿例程
    發表于 05-13 06:37

    使用STM32F429移植STemwin后,能正常顯示字符串及2D圖形,但是不能顯示控件,為什么?

    使用STM32F429移植STemwin后,能正常顯示字符串及2D圖形,但是不能顯示控件,使用WM_CreateWindow() 創建窗口也沒有反應?有誰碰到過這個問題嗎?
    發表于 05-10 06:24

    移植STEMWIN,用GUI Builder創建窗口和按鍵,按鍵里為啥只顯示第1個字母呢?

    用SPI接口的240*240屏幕,移植STEMWIN后出現了一個問題。 用GUI Builder創建窗口和按鍵,按鍵里為啥只顯示第1個字母呢
    發表于 04-18 08:17

    STemWin fatfs編碼格式沖突怎么解決?

    最近手上有一個項目,需要用到STemWin,fatfs和sd卡,由于STemWin顯示漢字用的XBF格式,xbf格式的漢字用的是UTF-8格式的;用fatfs創建以漢字為文件名的csv格式的文件
    發表于 04-12 08:12

    stm32cubeIDE移植的UCOSIII,定義float變量后進入硬件錯誤怎么解決?

    如題:stm32cubeIDE移植的UCOSIII,STemwin,用的stm32407芯片,定義float變量后進入硬件錯誤 之前是Keil5移植的時候也遇到了這個問題,然后是在啟動文件中加了一段代碼解決了。 這次因為啟動文件
    發表于 04-12 06:09

    鴻蒙OS元服務開發:【WebGL網頁圖形開發概述】

    WebGL的全稱為Web Graphic Library(網頁圖形),主要用于交互式渲染2D圖形和3D圖形。目前HarmonyOS中使用的WebGL是基于OpenGL裁剪的OpenG
    的頭像 發表于 04-02 17:26 ?407次閱讀
    鴻蒙OS元服務開發:【WebGL網頁<b class='flag-5'>圖形</b><b class='flag-5'>庫</b>開發概述】

    STM32F429的工程標準移植到HAL后中斷向量表異常的原因?

    STM32F429的工程標準移植到HAL后中斷向量表異常
    發表于 03-20 06:02

    移植libmodbus到米爾-全志T113-i開發板

    測試開發板在工業領域的應用,modbus作為工業領域的一個重要協議,那好就移植libmodbus
    的頭像 發表于 03-05 22:37 ?2299次閱讀
    <b class='flag-5'>移植</b>libmodbus<b class='flag-5'>庫</b>到米爾-全志T113-i開發板

    誰說單片機不能圖形編程,介紹MCU的TOP 5圖形GUI

    LittlevGL(LVGL) 是一款開源的嵌入式圖形用戶界面(GUI),專為嵌入式系統設計。LVGL以其輕量級、靈活性和強大的功能而備受開發者青睞,資源夠的情況下可移植到所有MCU。
    的頭像 發表于 12-07 10:42 ?7642次閱讀
    誰說單片機不能<b class='flag-5'>圖形</b>編程,介紹MCU的TOP 5<b class='flag-5'>圖形</b>GUI<b class='flag-5'>庫</b>!