littlevgl架構淺析


一.   littlevgl有幾個線程,作用是什么?

三個,主線程一個,和在主線程的hal_init函數中創建的另兩個sdl線程。

主線程完成一系列初始化工作后,循環每10ms調用在lv_init函數中注冊的三個任務,indev_proc_task,lv_refr_task,anim_task,重點關注的是每50ms處理一次的輸入處理indev_proc_task和每30ms處理一次的畫面刷新lv_refr_task。

monitor_sdl_refr_thread線程負責輸出圖像和鼠標鍵盤的輸入處理,每次處理后sleep 50ms。

tick_thread線程每5ms增加計時變量一次,用來為全局提供時間。

 

二.   輸入檢測到圖像輸出的過程(以單個按鈕被鼠標按下為例)

1.monitor_sdl_refr_thread線程中

鼠標按下,記錄鼠標位置數據

 

2.主線程中

         在indev_proc_task中讀取鼠標位置數據,和控件位置比較,得到控件指針,調用控件signal_func函數,此函數再調用lv_btn_set_state(btn, LV_BTN_STATE_PR)設置按鈕狀態為按下狀態,此時畫面並沒有實際更新,可以看成是發出了畫面更新請求。

         在lv_refr_task中處理收到的畫面更新請求,實際上是修改了畫面變量tft_fb

        

3. monitor_sdl_refr_thread線程中

         根據變量tft_fb的值更新畫面


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM