【STM32 .Net MF开发板学习-07】全屏位图无闪烁显示

简介: 16位320*240的位图大小为150K字节,而对于EM-STM3210E开发板来说,RAM仅有128K,远不够显示一幅完整位图,红牛的开发板即使有256K的RAM,但是刨去堆、栈及TinyCLR本身所用,剩下的也不多了,所以要显示全屏位图,必须分块显示。

16320*240的位图大小为150K字节,而对于EM-STM3210E开发板来说,RAM仅有128K,远不够显示一幅完整位图,红牛的开发板即使有256KRAM,但是刨去堆、栈及TinyCLR本身所用,剩下的也不多了,所以要显示全屏位图,必须分块显示。

    但是这样带来两个问题,一幅图要分块制作,相当繁琐,不过这个可以升级TBConvert程序,让其支持自动分块功能,这个问题算完美解决了。下个问题,从Flash读取需要一定时间,显示也需要一定时间,这样显示全屏位图的过程,就是从上到下,一个一个画块依次显示,效果不太好。幸好LCD驱动,第7个寄存器可以控制显示过程,可以在更新显存数据时,不更新画面,不过这个过程不要太长,否则LCD屏上会有不好看的条文出现。

    升级后的TBConvert程序如下,可以设定要分割的块数,注意高度必须要整除块数:

  

   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按钮),三幅图一同下载。

 

   

    编写如下代码,我们把这三幅图如幻灯片式的一一展现出来,代码如下:

       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);

                }

            }

        }

  运行后的效果图如下:

  

 

注意:红牛开发板和EM-STM3210E需要下载最新的固件,才能运行该示例。

下载地址和原先的相同,版本分别为V0.9.3V0.9.1.

-----------------------------------------------------------------------------------------

【低价开发板】http://item.taobao.com/item.htm?id=7117999726 

源码下载:http://www.sky-walker.com.cn/yefan/MFV40/SourceCode/TinyGUI_BigBMP.rar

文章参考: .Net Micro Framework 快速入门

中文讨论组:http://space.cnblogs.com/group/MFSoft/

相关文章
|
3月前
|
传感器
stm32f407探索者开发板(二十二)——通用定时器基本原理讲解
stm32f407探索者开发板(二十二)——通用定时器基本原理讲解
|
3月前
stm32f407探索者开发板(十九)——外部中断实验-EXIT
stm32f407探索者开发板(十九)——外部中断实验-EXIT
154 0
|
3月前
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
426 0
学习计算机组成原理(王道考研)------第十一天https://zhengyz.blog.csdn.net/article/details/121706379?spm=1001.2014.3001.5502
这篇文章是关于计算机组成原理的王道考研学习笔记,主要介绍了半导体存储器RAM和ROM的相关知识。
学习计算机组成原理(王道考研)------第十一天https://zhengyz.blog.csdn.net/article/details/121706379?spm=1001.2014.3001.5502
|
2月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【文献学习】Phase-Aware Speech Enhancement with Deep Complex U-Net
文章介绍了Deep Complex U-Net模型,用于复数值的语音增强,提出了新的极坐标掩码方法和wSDR损失函数,并通过多种评估指标验证了其性能。
36 1
|
2月前
|
开发框架 .NET API
C#/.NET/.NET Core推荐学习书籍(24年8月更新)
C#/.NET/.NET Core推荐学习书籍(24年8月更新)
|
3月前
stm32f407探索者开发板(二十三)——定时器中断实验
stm32f407探索者开发板(二十三)——定时器中断实验
109 0
|
3月前
|
程序员
stm32f407探索者开发板(二十一)——窗口看门狗
stm32f407探索者开发板(二十一)——窗口看门狗
|
3月前
|
芯片
stm32f407探索者开发板(二十)——独立看门狗实验
stm32f407探索者开发板(二十)——独立看门狗实验
166 0
|
3月前
|
监控
stm32f407探索者开发板(十八)——串口通信实验讲解(USART_RX_STA流程图详解)
stm32f407探索者开发板(十八)——串口通信实验讲解(USART_RX_STA流程图详解)
下一篇
无影云桌面