1. 程式人生 > >移植EMWIN STM32F103VET的一些問題(無作業系統

移植EMWIN STM32F103VET的一些問題(無作業系統

學習經歷 起因:因為貪便宜買了塊STM32F103VE的開發板,到貨後發現的問題 1.資料不全;導致學習困難度,“挫敗度”大大加深; 2.網上查詢的資料與板子不對應,對初學者來說困難度變大; 3.視訊教程過於龐大,學習過程中若沒有動力支援,放棄的可能性很大 參考意見:如果條件允許;1.儘量買資料全(最好有大量資料的,最好是中文的,否則你需要英文能力的支援),技術成熟的,有完整教材的來開始使用;有技術支援,論壇討論的;所節省下來的時間,往往比所花費的金錢更值得;最好有文件跟視訊的;便於快速學習與查詢問題 4.程式碼混亂,無“模組化”,導致無序與混亂;(模組化是一種必然化的需求)

5.版本的差異(韌體庫),導致不同的版本會有程式碼上的差異,從而出現錯誤

學習步驟(學習動力論): 1.實踐大於看書,實踐比書要簡單;前提是你先粗看一遍; 2.初學者,不要去看平臺搭建(延後),平臺搭建中的大量錯誤可能挫敗積極性;所以第一步先使用已經搭建好的平臺,去建立第一個LED燈實驗; 3.初學者需要明確目標:所需要的功能;硬體平臺中有大量的硬體知識需要學習,知識的前後也有依賴性;導致你找到你希望學習的內容,也必須將前面的知識先學會;如果你沒有合理的安排,或是空閒的時間,將導致挫敗感;並且前面的依賴性,關聯性,導致無法快速學習一個內容的知識(這是需要解決的,但好像沒有相應的教材,故學習很累)

微控制器對於計算機底層的知識,有利我們更好的理解計算機;現在的個人計算機底層的操作,都已經封裝好了,寫程式只需要在軟體層操作就行;並不需要涉及硬體層,“暫存器”或是“記憶體對映”等知識(秉火有詳細介紹)

基於成本,專案需求等考慮,微控制器的種類很多;有帶顯示屏,觸控的,到ARDUION;有主頻1.2G,記憶體2G的到只有12M,幾百KB的;有容易入門到的,如ARDUION簡單開發應用的(現已支援STM32,但還不全);到使用ARM處理的LUNUX系統,需要寫底層驅動的;需要根據自己的需求進行選擇,總體來說STM32的價效比較高,但依現有的資料與技術(注意:STM32一般記憶體較小,只有幾百KB,而外擴也不大,只有幾M);學習比較HAO時;如果你使用ARDUION另當別論

學習微控制器或嵌入式,一般都是為了對外進行控制操作,使用STM32或是ARM或樹莓派,不單單是點LED燈;更希望使用的是他的液晶顯示觸控功能;如果是簡單的可以自己寫就行,如果是比較複雜的,我們自己寫也可以,但有現成的更簡單的,就是使用EMWIN來完成,只需要幾條指令就可以完成; EMWIN是UCGUI的升級版,不開放原始碼;原始碼可以參考UCGUI

EMWIN主要是通過對原來的驅動的呼叫,來完成更高階的功能,在液晶屏上顯示對話方塊,圖片,可以點選操作;他主要通過呼叫原驅動中的畫點,取點函式來隔離化底層的操作,從而使EMWIN更通用化,可以適合更多的平臺,開發板

液晶的使用,為了更簡便一般使用FMSC介面功能

1.液晶需要按正確的順序連線開始板 2.開啟FMSC功能 3.驅動的編寫(你得檢視相應的資料DATASHEET,或是廠家已編好的驅動,移植即可)

STM32的使用的主要步驟:

1.開啟時鐘: 2.設定功能: 3.控制

開啟時鐘:(他是為了節能而設定的,如可穿戴調備,使用鋰電池,導致多了條語句也導致繁瑣度增加;  設定功能:是因為他一個引腳可以有多個功能如PWM,UART,SPI

EMWIN螢幕的移植(參考資料:"正點原子EMWIN移植")

前提:需要已有LCD的液晶和觸控驅動,並能正常畫點,畫線;觸控

下載stm32cubef1:http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/LN1897/PF260820?s_searchtype=partnumber 需要其中的 \stm32cubef1\STM32Cube_FW_F1_V1.0.0\Middlewares\ST\STemWin下的 (1.CONFIG (2.INC (3.LIB (4.OS 這向個檔案

(SOFTWARE裡函有GUIBUILDER軟體,可用於建立介面 (SIMULATION裡函有WINDOWS中模擬所需的工具

1.畫點函式_SETPIXELINDEX()與取點函式_GETPIXELINDEX()的完成:所在檔案 GUIDRV_TEMPLATE.C

2.LCD_X_CONFIG() 函式的修改:所在檔案LCDCONF_FLEXCOLOR_TEMPLATE.C 並刪除 LCDWRITEREG,LCDWRITEDATA,LCDWRITEDATAMULTIPLE,LCDREADDATAMULTIPLE

3.配置設定GUICONF.H

4.需要開啟CRC(不開啟將導致無顯示)

常見的錯誤:(1.GUI_NUMBYTES 過大,導致編譯通不過:所在檔案GUICONF.C (2.畫面不顯示:GUI_DEVICE_CREATEANDLINK(&GUIDRV_TEMPLATE_API,GUICC_M565,0,0):此處需設為使用自已的驅動&GUIDRV_TEMPLATE_API:所在檔案LCDCONF_FLEXCOLOR_TEMPLATE.C (3.顏色顏色反了:GUICC_565:所在函式LCDCONF_FLEXCOLOR_TEMPLATE.C-》 GUI_DEVICE_CREATEANDLINK (4.畫面不顯示GUIBUILDER建立檔案不顯示;需要在while中新增GUI_DELAY()或是GUI_EXEC() (5.畫面不顯示,未開啟CRC

觸控式螢幕的移植

1.需要完成GUI_TOUCH_X_ACTIVEATEX(),GUI_TOUCH_X_ACTIVEATEY()此兩個可為空;GUI_TOUCH_X_MEASUREX(),GUI_TOUCH_X_MEASUREY();

2.LCD_X_CONFIG():所在檔案:LCDCONF_FLEXCOLOR_TEMPLATE.C 使用GUI_TOUCH_CALIBRATE()函式,對觸控式螢幕進行設定方向,位置的校正; 

3.新增兩個中斷,在每個中斷中完成 OS_TIMEMS++ GUI_TOUCH_EXEC();

常見問題:觸控無反應:測試觸控驅動正常,使用GUI_TOUCH_GETXPHYS()無反應:需開頭處新增GUI_TOUCH_EXEC()引用 GUI_TOUCH_CALIBRATE()設定後GUI_TOUCH_GETXPHYS()獲取值為物理植,對GUI_TOUCH_GETXPHYS()無效;需使用GUI_TOUCH_GETSTATE() 獲取效正的值 應用的觸控無反應:需設定OS_TIMEMS++;和GUI_TOUCH_EXEC()中斷服務 應用的觸控無反應:使用GUIBUILDER建立的為DIALOG介面,而非WINDOW介面

無作業系統狀態下:操作介面也允許點選,觸控,滑鼠操作,使用GUIBUILDER時,需使用WINDOW介面,而不是DIALOG否則訊息函式無反應,無法點選操作

https://blog.csdn.net/wangyijieonline/article/details/76795084