极品馒头泬19p,国产精品亚洲一区二区三区,狠狠色噜噜狠狠狠7777奇米,国产精品视频一区二区三区无码,国产欧美日韩久久久久

【E960】最新STemWin5.22移植筆記(超詳細(xì))

2021-09-09 20:14:29      索煒達(dá)電子      1309     

項目編號:E960

文件大?。?5M

源碼說明:帶中文注釋

開發(fā)環(huán)境:C編譯器

簡要概述:

STemWin5.22移植筆記

網(wǎng)上關(guān)于emwin的資料很少,我在移植的時候查了很多資料,對我一個感覺是好亂,有的代碼改動的太多,這會讓像我這種菜鳥無從下手,并且來源很亂,這讓我決心寫下這個筆記,來讓新手快速入門emwin,高手當(dāng)然飄過哦,這只限于我這種菜鳥罷了。

emWin是segger公司出的一款圖形化界面,非常好看,大家所熟悉的ucGUI也是這個公司開發(fā)的,ucGUI是XP的,而emWin是win7哦!而移植也要比ucGUI簡單的多,沒有ucGUI那么麻煩。好廢話少說,如正題。

 1、獲取庫文件

首先,emWin庫來源有兩個,一個是MDK(KEIL)軟件目錄下的,另外一個是ST公司的emWin,這里我們用第二個,因為MDK目錄下的emWin最新版本對于大家不是好獲得(MDK5.0才是5.22,MDK4.7下是5.16的),而ST公司的那個好下載。http://www.st.com/web/en/catalog/tools/PF259225# 這個是下載地址哦,目前最新的是5.22的版本,打開頁面,點(diǎn)擊下面的Download,即可下載。

解壓縮下載的壓縮包,打開文件夾,我們看到

【E960】最新STemWin5.22移植筆記(超詳細(xì))

Libraries :里面就有我們需要的STemWin庫

Project:這個是ST的工程文件,以官方的eval板子建的工程

Utilities: 這個是文件系統(tǒng)和eval板子的硬件驅(qū)動程序

我們打開Libraries文件夾,看到StemWinLibrary522了,先莫激動,這個我們先到這里。

【E960】最新STemWin5.22移植筆記(超詳細(xì))

2、庫文件加到工程里

    首先,我們借用原子的觸摸程序(戰(zhàn)艦的哦),先將前面找到的庫文件夾復(fù)制到工程文件夾下,  注意:工程里的lcd.c和lcd.h改為ili93xx.c和ili93xx.h后重新加入到工程里,LCD_Init()也改為LCDx_Init()

下面的程序由ili93xx.h中剪切到ili93xx.c中,至于為什么做以上工作,移植過ucGUI的再知道不過了,這里就不多說了,不知道的可以百度哦。

typedef struct

{

         u16 LCD_REG;

         u16 LCD_RAM;

} LCD_TypeDef;                     

#define LCD_BASE        ((u32)(0x6C000000 | 0x000007FE))

#define LCD             ((LCD_TypeDef *) LCD_BASE)

如圖:

【E960】最新STemWin5.22移植筆記(超詳細(xì))

接下來就是拿出你的剪刀了,首先把主程序里的觸摸都剪掉,剩下下面的就行啦!

int main(void)

 {     

         u8 i=0;        

         delay_init();                              

         NVIC_Configuration();     

         uart_init(9600);                       

LED_Init();                            

        LC。Dx_Init();

         KEY_Init();              

        POINT_COLOR=RED;      

while(1)

         {

          

                   i++;

                   if(i==20)

                   {

                            i=0;

                            LED0=!LED0;

                   }delay_ms(20);

         }

}

接著就是把文件加到工程你去那,下圖是工程截圖:

【E960】最新STemWin5.22移植筆記(超詳細(xì))

紅框中間的三個文件路徑:STemWinLibrary522\Config

GUI_X.c 的路徑 :  STemWinLibrary522\OS

接下來就是emWin的庫啦,哈哈,打開Lib文件夾,看到那么多的文件,是不是暈了,我們仔細(xì)看看,ST給M0 M3 M4的都分配了庫,還很了編譯軟件和有無系統(tǒng)的,簡直是分的很好,顯然我們用STemWin522_CM3_Keil.lib 這個庫,好了,工程就到此就弄好了。

3、修改程序,啟動emWin

   接下來的工作就麻煩點(diǎn)嘍,大家淡定點(diǎn),其實(shí)也就一會兒的功夫嘍!

    首先動GUIConf.c中的GUI_NUMBYTES 為1024*50,50可以小點(diǎn),不要太大,太大編譯器會編譯會錯誤的,

接下來是LCDConf_FlexColor_Template.c 這個文件,先將我們的ili93xx.h頭文件包含進(jìn)來,接下來加入以下兩行程序,至于后面的地址為什么會這樣,這是LCD顯示里的哦

#define LCD_REG_ADDRESS              *(__IO uint16_t *)(0x6C000000)

#define LCD_DATA_ADDRESS          *(__IO uint16_t *)(0x6C000800)

 

     再就是下面的幾個程序

static void LcdWriteReg(U16 Data) {

  // ... TBD by user

         LCD_REG_ADDRESS=Data;

}

static void LcdWriteData(U16 Data) {

  // ... TBD by user

         LCD_DATA_ADDRESS=Data;

}

 

static void LcdWriteDataMultiple(U16 * pData, int NumItems) {

  while (NumItems--) {

    // ... TBD by user

                   LCD_DATA_ADDRESS=*pData++;

  }

}

 

static void LcdReadDataMultiple(U16 * pData, int NumItems) {

  *pData = LCD_DATA_ADDRESS;

         while (NumItems--) {

    // ... TBD by user

                   *pData++=LCD_DATA_ADDRESS;

  }

}

 

  此時重要的函數(shù)來嘍void LCD_X_Config(void)

   Config.Orientation = GUI_SWAP_XY | GUI_MIRROR_Y;

  這句是顯示方向的,默認(rèn)的是這個,弄好后,下進(jìn)去板子,看是否正常顯示,不正常顯示可以試試該這里哦。PS:9341的能行,但是6804的不行,看哪位能解決哦!

 

GUIDRV_FlexColor_SetFunc(pDevice, &【E960】最新STemWin5.22移植筆記(超詳細(xì))ortAPI, GUIDRV_FLEXCOLOR_F66709, GUIDRV_FLEXCOLOR_M16C0B16);

 

GUIDRV_FLEXCOLOR_F66709這個東西很重要,有很多可以選的,太多了就不列在這兒了。移植的時候我就栽在這里啦,這是對控制芯片的支持,詳細(xì)的請看最新手冊5.22的(P991),也有中文的5.12,不過5.22支持的很多.

 

   最后就是main函數(shù)嘍

    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE);

         GUI_Init();

         GUI_DispString("Hello STemWin!");

  記住這句一定要加上RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE);      不知道是為什么,大家加上就行嘍,哈哈,現(xiàn)在編譯把程序下到板子里去哦,哈哈 是不是成功顯示了。 來張照片。哈哈,先歇會兒,后續(xù)再寫上demo的和觸屏的。

【E960】最新STemWin5.22移植筆記(超詳細(xì))

哈哈,來嘍,大家再關(guān)注哦!demo和觸屏的獻(xiàn)上啦

4、加入demo,讓emWin炫起來

首先,工程文件加入demo的文件,如下圖

【E960】最新STemWin5.22移植筆記(超詳細(xì))

加入頭文件gui_demo.h    然后再主函數(shù)里加入GUIDEMO_Main(); 好,編譯程序,下進(jìn)去,驚喜嗎?看到經(jīng)典的開始畫面了,但是沒有動,右下腳沒有像別人的視頻里的滾動啊!哈哈,莫急,因為我們還沒有啟動emWin的心跳哦!

有的是用systick,但是我沒有實(shí)驗成功,而是用定時器用的,其實(shí)都是一樣,在HARDWARE里加入gui_time.c和gui_time.h文件,具體源碼見工程嘍,其實(shí)就是循環(huán)調(diào)用OS_TimeMS++;讓emWin跳動起來。別忘了,主函數(shù)要調(diào)用定時器的初始化哦!我們再編譯,程序跑起,哈哈,是不是動了。

欸,但是還有個問題,怎么就是一個畫面,不往下去了呢?這是我們還沒有開啟demos的開關(guān)了,打開GUIDEMO.h文件,配置如下圖,記住后面每個項目的開關(guān)要關(guān)掉很多的,不然會有錯誤的。我開了8個,到黑圈那里就好了。

【E960】最新STemWin5.22移植筆記(超詳細(xì))

再跑起程序,哈哈,這回就真的動了。高興啊,見到win7風(fēng)格的畫面,我為以后的界面充滿了信息。

 

5、啟動touch,人機(jī)界面更美好

  這是我們移植的最后一步啦,我們先看中文手冊上是怎么說的(P765),見下圖

【E960】最新STemWin5.22移植筆記(超詳細(xì))

那我們就按照這個步驟來嘍。首先是硬件程序,由于我們用的5.22版本沒有關(guān)于touch的C文件,我便從5.16那兒拷過來了GUI_X_Touch_Analog.c,把這個文件加入到StemWin5.22組里,因為直接就用的原子的觸摸了,我們就直接調(diào)用TP_Read_XY2(&x,&y);這個函數(shù),把他放進(jìn)GUI_TOUCH_X_MeasureX(void)和GUI_TOUCH_X_MeasureY(void)這兩個函數(shù)里,其實(shí)最后由這個函數(shù)GUI_TOUCH_Exec()循環(huán)調(diào)用,來一直讀AD的值。哦,說到這兒,把GUI_TOUCH_Exec()這個函數(shù)也要放進(jìn)前一步建的gui_time.c文件里,具體見源碼嘍!這就把前兩步弄完了。

第三步?jīng)]搞過,直接第四步吧。用示例確定校準(zhǔn)值??迷惑,哪里的示例,怎么確定,哈哈,聽我一步步說來。這里的值就是取得A/D轉(zhuǎn)換器的最小值和最大值。emWin需要用這些值來把測量結(jié)果轉(zhuǎn)換為以像素表示的觸摸位。這4個值為:

【E960】最新STemWin5.22移植筆記(超詳細(xì))

emWin的示例文件夾中有一個小程序,可用來獲取觸控面板的這些值。該程序位于文件夾Sample\Tutorial下,程序名稱為TOUCH_Sample.c。在硬件上運(yùn)行該示例。其輸出應(yīng)類似于下側(cè)的屏幕截圖。

【E960】最新STemWin5.22移植筆記(超詳細(xì))

 接下來我們在LCDConf_FlexColor_Template.c文件中加入上面提到的四個值

#define TOUCH_AD_TOP                         221

#define TOUCH_AD_BOTTOM                   3900

#define TOUCH_AD_LEFT                         160

#define TOUCH_AD_RIGHT                       3883

后面的數(shù)字只是臨時寫的,然后我們再新建gui_touch.c文件,這就是TOUCH_Sample.c文件的程序,我們拷貝過來到gui_touch.c中,如下圖所示

【E960】最新STemWin5.22移植筆記(超詳細(xì))

然后下載程序,界面如下圖

【E960】最新STemWin5.22移植筆記(超詳細(xì))

這是確定左上角的值,記住,一定要觸摸,藍(lán)色的X就是TOUCH_AD_LEFT的值,Y就是TOUCH_AD_TOP的值,然后下一張

【E960】最新STemWin5.22移植筆記(超詳細(xì))

同樣觸摸右下角,看到十字會移動到右下角,這是藍(lán)色X的值為TOUCH_AD_RIGHT,Y值為TOUCH_AD_BOTTOM,這樣,前面提到的四個值就已經(jīng)確定了,同時改掉LCDConf_FlexColor_Template.c里的那四個值。


最后一步啦,哈哈,見下圖,在LCD_X_Config函數(shù)里調(diào)用GUI_TOUCH_Calibrate函數(shù),這樣,我們的觸屏移植就弄完了。

【E960】最新STemWin5.22移植筆記(超詳細(xì))

弄了好久了,寒假就開始了,到現(xiàn)在觸屏終于可以啦,哈哈 ,發(fā)這個帖子也祝賀自己一下嘍,哈哈,大神們指點(diǎn)意見哦!

附件有:
1、5.22英文手冊和5.12的中文手冊,

2、前面的basic工程和后面的demo+touch的工程,

3、pdf格式的移植筆記,

4、emWin5.16-MDK和emWin5.22-MDK是MDK安裝目錄下的emWin庫,分別是5.16和5.22的,

5、SeggerEval_WIN32_MSVC_MinGW_GUI_V522是VC6.0可以仿真的庫。

目錄│文件列表:

 └ 移植筆記

    │ emWin5.12用書手冊中文版本.pdf

    │ emWin5.16-MDK.rar

    │ emWin5.22-MDK.rar

    │ emWin5.22_Basic-戰(zhàn)艦.rar

    │ emWin5.22_Demo+Touch-戰(zhàn)艦 -.rar

    │ emWin5.22英文.pdf

    │ SeggerEval_WIN32_MSVC_MinGW_GUI_V522.rar

    │ STemWin5.22移植筆記.pdf

    └ STemWinLibrary522.rar

TAGSTemWin
  • 4 次
  • 1 分