91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STemwin圖形庫移植與運(yùn)用

DS小龍哥-嵌入式技術(shù) ? 來源:DS小龍哥-嵌入式技術(shù) ? 作者:DS小龍哥-嵌入式技 ? 2022-02-28 14:09 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

?一、環(huán)境介紹

主控MCU: STM32F103ZET6

STM32程序開發(fā)IDE: keil5

STM32程序風(fēng)格: 采用寄存器方式開發(fā),注釋齊全,執(zhí)行效率高,方便移植

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

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

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

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

STemwin圖形庫移植與運(yùn)用

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.pngSTemwin圖形庫移植與運(yùn)用

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.pngSTemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

二、STemwin介紹

2.1 emWin介紹

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

在國內(nèi)做嵌入式系統(tǒng)的大部分都使用emwin,其簡單來說就是一套圖形庫。

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

SEGGER公司的產(chǎn)品

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

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

拓展資料:

嵌入式系統(tǒng)無疑是當(dāng)前最熱門最有發(fā)展前途的IT應(yīng)用領(lǐng)域之一。

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

Keil軟件

Keil公司是一家業(yè)界領(lǐng)先的微控制器(MCU)軟件開發(fā)工具的獨(dú)立供應(yīng)商。

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

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

2.2 UCGUI與STemwin介紹

說起UCGUI得先從UCOS說起,在國內(nèi)做嵌入式系統(tǒng)的,開始入門OS的時(shí)候,大家應(yīng)該都會(huì)選擇uC/OS,主要是因?yàn)榇a開源且資料眾多。由于uC/OS的原因大家也一定接觸了uC/GUI的嵌入式圖形軟件庫。其實(shí)uC/Gui的核心代碼并不是Micrium公司開發(fā)的,而是Segger公司為Micrium公司定制的圖形軟件庫,當(dāng)然也是基于Segger公司的emwin圖形軟件庫開發(fā)的。所有說uC/GUI和emwin的使用方法沒有區(qū)別。

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

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

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

在選擇的時(shí)候,雖然功能上沒有區(qū)別,但因?yàn)榘鏅?quán)付費(fèi)問題,在實(shí)際使用時(shí)就需要根據(jù)自己的平臺(tái)來選擇。如果我們使用的是 STM32 開發(fā)平臺(tái),自然我們選擇的是STemWin;如果我們使用的是NXP的平臺(tái),我們就是用為NXP定制的emwim。

在使用特定的平臺(tái),我們也需要選擇定制的emWin,在STemWin里有一個(gè)檢測(cè)機(jī)制確定代碼所運(yùn)行的平臺(tái),若是 STM32 芯片,則運(yùn)行正常,若非 STM32 芯片,就不能正常使用了。同樣,NXP也是一樣的機(jī)制。

如果使用的芯片沒有授權(quán)emWin的版權(quán),可以推薦使用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官網(wǎng)下載地址:https://www.micrium.com/

2.3 為什么要學(xué)習(xí)圖形界面框架?

很多產(chǎn)品需要人機(jī)交互,人機(jī)交互大多數(shù)是通過LCD來完成的,所以就需要我們?cè)趹?yīng)用中設(shè)計(jì)LCD交互界面,簡單的UI界面我們可以自己寫代碼完成,但是比較復(fù)雜、絢麗的界面自己來做就比較困難了。STemWin中提供了很多的控件,我們可以使用這些控件來完成復(fù)雜的界面設(shè)計(jì)。

STemwin圖形庫移植與運(yùn)用

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

2.4 emwin下載地址

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

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

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

3.1 獲取keil軟件自帶的emwin庫

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

路徑: \ARM\Segger\emWin

STemwin圖形庫移植與運(yùn)用

?

3.2 下載STemwin圖形界面庫

STemwin適合在ST意法半導(dǎo)體的芯片上使用,Stemwin的資料包可直接在ST官網(wǎng)上進(jìn)行下載。

ST意法半導(dǎo)體官網(wǎng)首頁地址: https://www.st.com

下面是下載的步驟截圖:

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用

?

STemwin圖形庫移植與運(yùn)用

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

3.3 添加STemwin文件到工程

移植之前,需要先準(zhǔn)備一個(gè)帶LCD屏驅(qū)動(dòng)、觸摸屏驅(qū)動(dòng)的完整Keil工程。

(1) 在工程目錄下創(chuàng)建一個(gè)ST_EMWIN文件夾,用于存放STEMWIN相關(guān)的文件

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

(2) 拷貝的目錄

STemwin圖形庫移植與運(yùn)用

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

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

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

STemwin圖形庫移植與運(yùn)用

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

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

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

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

STemwin圖形庫移植與運(yùn)用

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

(4) 添加頭文件路徑

STemwin圖形庫移植與運(yùn)用

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

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

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

3.5 修改GUIConf.h文件

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

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用

?

3.6 修改GUIConf.c文件

GUIConf.c文件配置STemwin運(yùn)行時(shí)需要的內(nèi)存,如果使用了SRAM外擴(kuò)內(nèi)存,可以將數(shù)組定義在外部的SRAM空間。

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

3.7 修改GUIDRV_Template.c文件

GUIDRV_Template.c文件是LCD屏的驅(qū)動(dòng)模板文件,需要根據(jù)自己的LCD屏驅(qū)動(dòng)進(jìn)行修改。

主要修改的函數(shù)是: 畫點(diǎn)函數(shù)、讀點(diǎn)函數(shù)。

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

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

3.8 修改LCDConf_FlexColor_Template.c文件

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用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);

//觸摸屏校準(zhǔn)參數(shù)設(shè)置

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

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

//這兩個(gè)函數(shù)在GUI.h文件的1292行定義

}

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

GUI_TOUCH_Calibrate函數(shù)是在GUI.h的

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

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

這4個(gè)函數(shù)原型在GUI.h文件的1404行聲明。

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

在GUIDRV_Template.c文件下面增加這4個(gè)觸摸屏的接口函數(shù)。

STemwin圖形庫移植與運(yùn)用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) { //測(cè)量X

TOUCH_ReadXY();

return touch.x;

}

int GUI_TOUCH_X_MeasureY(void) { //測(cè)量Y

TOUCH_ReadXY();

return touch.y;

}

3.10 添加GUI_X.c文件

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

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

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

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

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

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

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

3.11 定時(shí)器提供時(shí)間基準(zhǔn)與輪詢觸摸屏

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

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

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

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

3.13 對(duì)移植結(jié)果進(jìn)行基本測(cè)試

進(jìn)行GUI框架初始化之前,需要先開啟CRC時(shí)鐘校驗(yàn)。

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

/*獲取觸摸屏狀態(tài)\設(shè)置光標(biāo)位置*/

void Touch_Process(void)

{

GUI_PID_STATE STATE; //該變量為GUI觸屏的x y位置存儲(chǔ)坐標(biāo)

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

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

{

GUI_CURSOR_SetPosition(STATE.x,STATE.y);//設(shè)置光標(biāo)位置

GUI_CURSOR_Show(); //設(shè)置顯示光標(biāo)

}

}

運(yùn)行效果如下:

STemwin圖形庫移植與運(yùn)用

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

3.13 測(cè)試SEGGER官方DEMO代碼

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

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

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

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.pngSTemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

四、STemwin基本運(yùn)用

4.1 GUIBuilder軟件使用

GUIBulider是emwin官方出的軟件,每個(gè)版本的emwin都有其對(duì)應(yīng)版本的。

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

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用

?

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

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

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

4.2 STemwin外置中文字庫設(shè)置

(1) 制作GBK中文字庫

STemwin圖形庫移植與運(yùn)用

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

制作好的字庫效果:

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

字庫制作好之后,可以通過文件系統(tǒng)+SD將字庫文件燒寫到板載的W25Q64 FLASH里指定位置,方便后續(xù)調(diào)用。

(2) 制作ASCII 碼字庫

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

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

注意: 最前面有個(gè)空格。 一共95個(gè)數(shù)據(jù)。

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

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

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

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

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

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

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

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用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圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

STemwin圖形庫移植與運(yùn)用poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

QQ登錄界面(中文顯示)

STemwin圖形庫移植與運(yùn)用

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

QQ登錄框點(diǎn)擊登錄按鈕之后登錄成功的效果

STemwin圖形庫移植與運(yùn)用

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

4.3 實(shí)體按鍵操作界面控件

GUI_SendKeyMsg()函數(shù): 向一個(gè)指定的按鍵發(fā)送一個(gè)狀態(tài)消息。

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

參數(shù)

含意

Key

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

Pressed

鍵的狀態(tài)(參 GUI_StoreKeyMsg())

示例:

key=KEY_Scanf();

switch(key)

{

case 1:

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

break;

case 2:

GUI_SendKeyMsg(GUI_KEY_ENTER,1); //回車

break;

case 3:

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

break;

case 4:

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

break;

default:

/*發(fā)送按鈕松開消息*/

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

GUI_SendKeyMsg(GUI_KEY_ENTER,0); //回車

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

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

break;

}

審核編輯:湯梓紅


?

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 網(wǎng)卡
    +關(guān)注

    關(guān)注

    4

    文章

    340

    瀏覽量

    28921
  • 設(shè)備
    +關(guān)注

    關(guān)注

    2

    文章

    4837

    瀏覽量

    73743
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    26

    文章

    6293

    瀏覽量

    118223
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    【開源】WeGUI高效多色圖形

    以下文章內(nèi)容由CW32生態(tài)社區(qū)用戶口服提供: https://github.com/KOUFU-DIY/WeGui_RGB WeGui是以高執(zhí)行效率為特色以單色驅(qū)動(dòng)為主的高效圖形, 功能與U8G2
    的頭像 發(fā)表于 12-29 13:12 ?3876次閱讀
    【開源】WeGUI高效多色<b class='flag-5'>圖形</b><b class='flag-5'>庫</b>

    瑞薩電子攜手LVGL PRO推進(jìn)嵌入式圖形用戶界面開發(fā)

    隨著嵌入式設(shè)備對(duì)用戶體驗(yàn)要求的不斷提升,圖形用戶界面(GUI)成為產(chǎn)品開發(fā)越來越重要的一環(huán)。作為目前最流行的開源嵌入式圖形之一的LVGL,最近就推出了自己的商業(yè)化專業(yè)UI編輯器LVGL PRO 1.0版本。
    的頭像 發(fā)表于 11-21 10:23 ?1572次閱讀
    瑞薩電子攜手LVGL PRO推進(jìn)嵌入式<b class='flag-5'>圖形</b>用戶界面開發(fā)

    ElfBoard技術(shù)貼|如何在【RK3588】ELF 2開發(fā)板移植LVGL8.2

    隨著嵌入式設(shè)備對(duì)圖形用戶界面(GUI)的需求不斷提升,選擇一款高效、輕量且易于移植的GUI框架已成為項(xiàng)目開發(fā)中的關(guān)鍵環(huán)節(jié)。LVGL與Qt作為嵌入式領(lǐng)域廣泛使用的兩種GUI解決方案,在架構(gòu)設(shè)計(jì)、資源
    的頭像 發(fā)表于 10-15 08:52 ?5941次閱讀
    ElfBoard技術(shù)貼|如何在【RK3588】ELF 2開發(fā)板<b class='flag-5'>移植</b>LVGL8.2

    如何移植iconv到RT-Thread Studio工程中?

    需要使用到漢字編碼轉(zhuǎn)換,請(qǐng)問如何移植iconv,請(qǐng)各位予以指導(dǎo)
    發(fā)表于 10-09 08:52

    使用MDK按照官方nano移植的方法建,并移植了pin.h和drv_gpio.c,drv_gpio.h,編譯報(bào)錯(cuò)缺少文件,怎么解決?

    使用MDK按照官方nano移植的方法建,并移植了pin.h和drv_gpio.c,drv_gpio.h,發(fā)現(xiàn)編譯報(bào)錯(cuò)缺少文件,但是git沒有說明 #include #include 這兩個(gè)文件是什么,因?yàn)槿鄙傥募?dǎo)
    發(fā)表于 09-29 07:15

    STM32標(biāo)準(zhǔn)在Keil5移植rtthread nano后無法顯示oled內(nèi)容是怎么回事?

    STM32F103VET6使用標(biāo)準(zhǔn),在Keil5上移植rtthread nano后OLED_Update()函數(shù)在Sys_Init()中放在board.c中可以執(zhí)行并且顯示出logo圖像,使用線程
    發(fā)表于 09-22 08:28

    RT-Thread Studio使用stemwin包編譯不過怎么解決?

    添加stemwin軟件包,為什么編譯不過,找不到文件,有哪位大神可以幫忙解決一下:Q
    發(fā)表于 09-22 07:51

    AP6181移植到STM32H723,wifi初始化錯(cuò)誤怎么解決?

    了wifi_image_0.1.rbl,OTA采用了libota_noalgo_0.1.2_stm32l4_gcc.a. 已經(jīng)成功移植了FAL、SFUD、easyflash、filesystem,sdio驅(qū)動(dòng)使用了art-pi
    發(fā)表于 09-18 08:20

    RT-Thread Nano硬核移植指南:手把手實(shí)現(xiàn)VGLite圖形驅(qū)動(dòng)適配 | 技術(shù)集結(jié)

    VGLite是NXP提供的輕量級(jí)2D圖形API,本文將手把手帶你實(shí)現(xiàn)VGLite圖形驅(qū)動(dòng)適配RT-Thread。文章分為上、下兩篇,將手把手教您移植。上篇對(duì)RT-ThreadNano內(nèi)核與Finsh組件進(jìn)行
    的頭像 發(fā)表于 07-17 14:40 ?3397次閱讀
    RT-Thread Nano硬核<b class='flag-5'>移植</b>指南:手把手實(shí)現(xiàn)VGLite<b class='flag-5'>圖形</b>驅(qū)動(dòng)適配 | 技術(shù)集結(jié)

    請(qǐng)問工程移植都有哪些需要注意的地方?

    ST的固件還是挺豐富的,有時(shí)候我們直接移植工程還是挺方便的,不過總是會(huì)有各種各樣的報(bào)錯(cuò)存在,在移植的時(shí)候有哪些需要注意的嗎?或者一些常見的報(bào)錯(cuò)如何解決?
    發(fā)表于 07-11 06:50

    改善光刻圖形線寬變化的方法及白光干涉儀在光刻圖形的測(cè)量

    引言 在半導(dǎo)體制造與微納加工領(lǐng)域,光刻圖形線寬變化直接影響器件性能與集成度。精確控制光刻圖形線寬是保障工藝精度的關(guān)鍵。本文將介紹改善光刻圖形線寬變化的方法,并探討白光干涉儀在光刻圖形測(cè)
    的頭像 發(fā)表于 06-30 15:24 ?975次閱讀
    改善光刻<b class='flag-5'>圖形</b>線寬變化的方法及白光干涉儀在光刻<b class='flag-5'>圖形</b>的測(cè)量

    改善光刻圖形垂直度的方法及白光干涉儀在光刻圖形的測(cè)量

    引言 在半導(dǎo)體制造與微納加工領(lǐng)域,光刻圖形的垂直度對(duì)器件的電學(xué)性能、集成密度以及可靠性有著重要影響。精準(zhǔn)控制光刻圖形垂直度是保障先進(jìn)制程工藝精度的關(guān)鍵。本文將系統(tǒng)介紹改善光刻圖形垂直度的方法,并
    的頭像 發(fā)表于 06-30 09:59 ?672次閱讀
    改善光刻<b class='flag-5'>圖形</b>垂直度的方法及白光干涉儀在光刻<b class='flag-5'>圖形</b>的測(cè)量

    基于STM32 HAL與標(biāo)準(zhǔn)的esp8266接入機(jī)智云方案(二)

    ,我們還將討論如何移植HAL和標(biāo)準(zhǔn)以實(shí)現(xiàn)與機(jī)智云的兼容,幫助開發(fā)者更高效地完成項(xiàng)目的云平臺(tái)接入。代碼下載注意:此時(shí)手機(jī)app端的該設(shè)備為網(wǎng)頁端的虛擬設(shè)備僅僅是
    的頭像 發(fā)表于 05-28 18:02 ?1413次閱讀
    基于STM32 HAL<b class='flag-5'>庫</b>與標(biāo)準(zhǔn)<b class='flag-5'>庫</b>的esp8266接入機(jī)智云方案(二)

    基于RV1126開發(fā)板移植NCNN部署方法

    本文檔說明基于EASY EAI Nano移植NCNN部署的方法與基于NCNN成功運(yùn)行yolov4的Demo。 ? ? ? ?NCNN是騰訊優(yōu)圖實(shí)驗(yàn)室首個(gè)開源項(xiàng)目,是一個(gè)為手機(jī)端極致優(yōu)化的高性能
    的頭像 發(fā)表于 04-16 15:24 ?628次閱讀
    基于RV1126開發(fā)板<b class='flag-5'>移植</b>NCNN部署<b class='flag-5'>庫</b>方法

    移植LWIP+FREERTOS時(shí)遇到的問題怎么解決?

    固件,移植成功,并且跑了幾個(gè)串口通信的任務(wù),測(cè)試大概兩三天的樣子,并沒有出現(xiàn)問題。 2:移植LWIP1.4.1 (從ST官網(wǎng)下載的那個(gè)網(wǎng)頁的例程,修改引腳定義后跑在板子上沒問題,確認(rèn)硬件沒問題) 3
    發(fā)表于 03-11 06:48