久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6444|回復: 3
打印 上一主題 下一主題
收起左側

ucGUI移植經驗總結

[復制鏈接]
跳轉到指定樓層
樓主
UCGUI移植經驗總結 BYBYBYBY :機長
如果沒有找到 ucGUI 沒有提供你所使用的 LCD 驅動,看完本文章,定有大收獲。
本教程是將 ucGUI 移植到 STM32 單片機 。 LCD 驅動器為 HX8347 。 為了教程有更大的通用性, LCD 驅動程序未采用 ucGUI 官方提供。編譯環境為 5.4 。
本教程可作為其它單片機、 LCD 、編譯環境的參考。
不足之處,敬請指出。
1 解壓 “ u c GUI-V3-90a---- 非常好用 .rar ”
這個版本的優點:需要改動的地方少;編譯時不會由于在 Linux 環境下編輯源代碼 , 然后又拿回 IAR 環境編譯造成 大量 “ Warning[Pa050]: …… ” ; LCD 底層驅動獲取方便,不依賴于 u c GUI 官方驅動。
順次打開 “ uCGUI-V3-90a → UCGUI390a → Start ” 。 將 Start 文件夾下的 Config 和 GU I
文件夾復制的自己所建立工程文件夾。
然后打開 IAR ,在 Workspace 中添加 Config 和 GUI 文件夾內容。添加完后,如下圖所示。其中 “ FWLib ” 是我的工程中所需要的,屬于多余項。



對應 LCD 驅動程序,此處填 -1 ,然后 解壓 “ u c GUI-V3-90a---- 非常好用 .rar ” ,打開 GUI 文件夾下的 LCDDriver 文件夾,打開 LCDDummy.c 文件進一步配置,具體配置在第 5 步講 */
#define LCD_FIXEDPALETTE 565 /* 定義顏色查詢表,此處選擇與 LCD 有關,具體參數查看 LCD 資料,查詢顏色格式。然后打開 GUI 文件夾下的 ConvertColor 文件夾 ,查找對應文件進行配置 */
#define LCD_SWAP_RB 1 /* 激活紅 、 藍基色的交換 。 此處建議首先配置為 0 。待所有配置完成后,運行程序,設定全屏顯示為藍色。如果顯示為紅色,改為 1 ,即可正常顯示 */
#define LCD_INIT_CONTROLLER() LCD_InitPanel() /*LCD_InitPanel() 是之前已經編寫好的 LCD 初始化程序,非 ucGUI 自帶 */
如果說 LCD 自帶的驅動程序已經對寄存器進行了配置,那么以下寄存器配置語句,請注釋掉,否則在程序運行時可能會出現錯誤。
LCD_WRITE_REGLH(0x00>>1,LCD_REG0,LCD_REG1); \
LCD_WRITE_REGLH(0x02>>1,LCD_REG2,LCD_REG3); \
LCD_WRITE_REGLH(0x04>>1,LCD_REG4,LCD_REG5); \

同理,找到 void LCD_L0_GetPixelIndex 函數,在其留空處,調用 LCD 在獲。 x,y )處以某一顏色的函數。
通過以上幾步 , ucGUI 移植基本完成 。 接下來所要做的就是 , 編寫測試函數 , 然后將整個程序進行編譯。有錯誤,該錯誤。如果遇到 ucGUI 的變量沒有定義,則在出現的錯誤文件開頭加入 ucGUI 對應的頭文件。
Ex: 調用 GUI_SetColor(GUI_BLACK);
編譯時,出現錯誤,提示 GUI_BLACK 沒有定義。則只需在出現錯誤的 C 文件開頭加上 “ #include "GUI.h" ” ,即可解決。

6 底層配置優化
如果 ucGUI 已經移植成功,并通過測試,那么請繼續看這一節。如果沒有,請跳過。
在測試 ucGUI 時 , 我發現 , 在刷屏 ( 將 LCD 屏幕全部填充為某一顏色 ) 時 , 調用 ucGU I的刷屏函數 , 遠不如 LCD 的刷屏函數執行速度快 。 通過測試 , ucGUI 的刷屏速度不及 LC D的 20 分之 1 。
通過查看 ucGUI 的底層文件,我找到了 ucGUI 刷屏速度慢的原因。
ucGUI 的畫圖機制是找到某一個點 , 然后對其進行顏色填充 ; 然后再找下一個點對其進行顏色填充。我們通常所用的 LCD 驅動器,如果說所畫圖像,某一區域顏色單一,在設定繪圖區域后,順次進行顏色填充,無需找一個點畫一個點。這就是 ucGUI 畫圖時不如 LC D速度快的原因。

優化的方法很簡單:
打開對應的 ucGUI 的 LCDDriver 文件夾下的 LCD 驅動程序 C 文件。找到 “ voidLCD_L0_DrawHLine (int x0, int y, int x1) ” 函 數 。 將 “ else ” 語 句 下 的“ LCD_L0_SetPixelIndex(x0, y, LCD_COLORINDEX); ” 改寫為 LCD 顏色填充函數 。 比如說 ,我將其改為了 “ LCD_WriteRAM(LCD_COLORINDEX) ” 。這樣的話,不再找一個點畫一個點。大大加快了 ucGUI 的畫圖執行速率。
本節小結:此種優化方法并不適用于所有的 LCD 驅動器。 ucGUI 畫圖時采取找一個點畫一個點的方法,應該是出于程序通用性的考慮。如果 ucGUI 移植完成后,刷屏效果可以接受,為了程序穩定性考慮,不建議進行優化。

常見問題解決:
如果移植后,顯示的畫面進行了橫豎翻轉,或者鏡像翻轉。只需要在 LCDConf.h 文件中,加入以下語句

完整的pdf格式文檔51黑下載地址:
ucGUI移植經驗總結.pdf (290.02 KB, 下載次數: 63)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:495323 發表于 2019-10-25 12:44 來自手機 | 只看該作者
你成功了嗎?能否交流一下
回復

使用道具 舉報

板凳
ID:258516 發表于 2020-7-16 17:27 | 只看該作者
這是 本尊 多年前寫的文章,
請立即 將 本文章中的 PDF,
修改為免費下載 !。
回復

使用道具 舉報

地板
ID:229137 發表于 2020-10-3 18:23 | 只看該作者
還是下載了
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区三区四区在线视频 | 久久久91| 欧美精品一区二区三区在线 | 久久久性色精品国产免费观看 | 久久久久久久久久久久久久国产 | 黑人一级黄色大片 | 天堂av中文在线 | 日本成人中文字幕 | 精品人伦一区二区三区蜜桃网站 | 欧美日韩亚洲一区 | 日韩av成人| 欧美综合自拍 | 国产午夜精品久久久 | 日本爱爱| 精品一区二区三区四区外站 | 久久久久国产精品午夜一区 | 日本爱爱视频 | 天天人人精品 | 一区欧美 | 偷拍自拍第一页 | 日韩久久久久 | 黄色男女网站 | 久久国产高清视频 | 成年人在线电影 | 精品综合久久久 | 狠狠干狠狠操 | 视频二区在线观看 | 天天躁日日躁狠狠的躁天龙影院 | 欧美日韩福利 | 久久久久久综合 | 久久99精品久久久 | 金莲网| 亚洲视频中文字幕 | 日韩av成人在线 | 久久精品亚洲欧美日韩久久 | 亚洲精选一区二区 | 国产亚洲精品精品国产亚洲综合 | 亚洲手机视频在线 | 久久精品欧美视频 | 日韩成人免费 | 一级久久久久久 |