一直想利用所學的東西自己設計一個精致一些的作品,手頭正好有一塊紅牛開發板,就先用它來寫一些軟件,熟悉一下過程和一些想法的可行性。首先當然是選擇一個操作系統了,對比了幾種之后選擇了emWin。那就移植一下吧。
這里首先要感謝一下http://www.openedv.com/posts/list/0/27697.htm 這篇帖子。我的思路基本是照着這個帖子做的。感謝樓主把辛苦的研究成果貢獻出來,讓我這個菜鳥能夠快些入門。
STemWin下載地址: http://www.st.com/web/en/catalog/tools/PF259225#
在ST官方網站上下載好STemWin后 解壓 先使用Libraries文件夾下的STemWinLibrary522 文件夾 復制到項目工程文件夾里
然后添加下列文件到工程
修改 LCDConf_FlexColor_Template.c
添加 #include "ili9320.h" 在此之前需要將所使用的液晶屏底層驅動程序寫好。橫豎屏取決於底層的驅動。
注意下面的函數,寫指令和寫數據一般都在液晶驅動的底層有定義,直接添加進來就行了。
static void LcdWriteReg(U16 Data) { // ... TBD by user LCD->LCD_REG = Data; } static void LcdWriteData(U16 Data) { // ... TBD by user LCD->LCD_RAM = Data; } static void LcdWriteDataMultiple(U16 * pData, int NumItems) { while (NumItems--) { // ... TBD by user LCD->LCD_RAM = *pData++; } } static void LcdReadDataMultiple(U16 * pData, int NumItems) { *pData = LCD->LCD_RAM; while (NumItems--) { // ... TBD by user *pData++ = LCD->LCD_RAM; } }
修改完成后就是建立了emWin與液晶屏的聯系
關於 void LCD_X_Config(void) 函數 (這個我會總結一下后補)續....
然后測試GUI顯示是否正常
我用的是ST官網最新的庫函數寫的程序,包括液晶屏的驅動函數都是官方的,所以感覺操作起來要方便一些
主函數內寫如下代碼:
SystemInit(); RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC,ENABLE); LCD_X_Init(); ili9320_Initializtion(); GUI_Init(); GUI_SetColor(GUI_YELLOW); GUI_DispStringAt("emWin5.22 GUI Complete",80,20); while(1);
注意液晶的初始化不要忘了
這樣我在紅牛開發板上就可以正常顯示了(液晶驅動是ILI9320)
然后可以利用GUI.h里面的各種函數顯示想要的東西
具體函數的功能以及如何使用參照emWin用戶手冊上面有詳細的解釋。
下面是幾個API函數在手冊里面可以查找
數值API:
文本API:
到此為止我們就完成了初步的液晶底層移植。接下來移植一下演示程序。