天天看點

【STM32 .Net MF開發闆學習-07】全屏位圖無閃爍顯示

16位320*240的位圖大小為150K位元組,而對于EM-STM3210E開發闆來說,RAM僅有128K,遠不夠顯示一幅完整位圖,紅牛的開發闆即使有256K的RAM,但是刨去堆、棧及TinyCLR本身所用,剩下的也不多了,是以要顯示全屏位圖,必須分塊顯示。

但是這樣帶來兩個問題,一幅圖要分塊制作,相當繁瑣,不過這個可以更新TBConvert程式,讓其支援自動分塊功能,這個問題算完美解決了。下個問題,從Flash讀取需要一定時間,顯示也需要一定時間,這樣顯示全屏位圖的過程,就是從上到下,一個一個畫塊依次顯示,效果不太好。幸好LCD驅動,第7個寄存器可以控制顯示過程,可以在更新顯存資料時,不更新畫面,不過這個過程不要太長,否則LCD屏上會有不好看的條文出現。

更新後的TBConvert程式如下,可以設定要分割的塊數,注意高度必須要整除塊數:

【STM32 .Net MF開發闆學習-07】全屏位圖無閃爍顯示
TBConvert 下載下傳位址: http://www.sky-walker.com.cn/yefan/MFV40/TBConvert.exe 針對第二個問題,更新TinyGUI庫,增加如下兩個函數:

     public static void SuspendLayout();  //挂起更新

    public static void ResumeLayout();   //恢複更新           

好了,我們用繪圖工具,制作三幅240*320的位圖,制作好之後用TBConvert 分為4段然後儲存。然後用YFAccessFlash工具,把這三幅位圖下載下傳到Custom去,下載下傳前記得要先清空Flash(按 Erase按鈕),三幅圖一同下載下傳。

【STM32 .Net MF開發闆學習-07】全屏位圖無閃爍顯示

編寫如下代碼,我們把這三幅圖如幻燈片式的一一展現出來,代碼如下:

       public static void Main()

        {

            uint offset_Addr = 0x002A0000;       //Custom區在Flash中的偏移位址

            uint bmp_Size = 38412;               //TinyBMP圖檔的1/4  

            byte[] bytData = new byte[bmp_Size];

            uint DataAddr = offset_Addr;

                 

            while (true)

            {

                for (int index = 0; index < 3; index++)

                {

                    if (index == 0) DataAddr = offset_Addr;

 

                    Graphics.SuspendLayout();   //可以比較一下,有這兩句代碼和沒有這兩句代碼,圖形顯示效果的差別

                    for (int i = 0; i < 4; i++)

                    {

                        AccessFlash.Read(DataAddr, bmp_Size, bytData);

                        Graphics.DrawImage(0, i * 80, bytData);

                        DataAddr += bmp_Size;

                    }

                    Graphics.ResumeLayout(); 

                    //等待時間必須要長一些,否則顯示會有問題(>300ms)

                    Thread.Sleep(1000);

                }

            }

        }           

運作後的效果圖如下:

【STM32 .Net MF開發闆學習-07】全屏位圖無閃爍顯示

注意:紅牛開發闆和EM-STM3210E需要下載下傳最新的固件,才能運作該示例。

下載下傳位址和原先的相同,版本分别為V0.9.3和V0.9.1.

源碼下載下傳:

http://www.sky-walker.com.cn/yefan/MFV40/SourceCode/TinyGUI_BigBMP.rar

文章參考: 《.Net Micro Framework 快速入門》

中文讨論組:

http://space.cnblogs.com/group/MFSoft/

繼續閱讀