PIC单片机 显示器程序 如何保存一张图片的数据进入程序存储器中,数据太大,数据存储器中放不下图片

PIC单片机 显示器程序 如何保存一张图片的数据进入程序存储器中,数据太大,数据存储器中放不下图片,第1张

PIC单片机 ,显示器程序,是用LCD12864显示图片吗,其实这个图片数据并不多,图片分辨率是128×64的BMP格式。如果是用更大的彩屏,那数据量会增加,可以考虑用EEPROM存储器,如AT24C系列的,只需两个单片机的引脚与存储器连接。根据图片大小选择存储器的容量。

这跟破解版或者购买版都没关系,8.05以后后的版本编译出来的程序全部都是加了一个 .as汇编文件段(8.05不会加这个)。

如果你的程序只有几行,那肯定能看出大小差别。而且有可能这个汇编文件段还比你的程序大

如果你的程序很长很长,这不会看出来区别,可能还会因为程序内其他地方优化得好而看不出差别来。

试用版也是有优化代码的。

如果你非要优化,推荐用汇编来直接写程序,人脑来优化程序怎么也比电脑优化程序要好。

补充:你以为新的就一定是好的么?现在好多做计算机网络的人还专门用命令行界面而不用视窗界面;有些工厂在要求稳定系数高的场合现在还使用着ROM都没有的8031单片机,甚至是比8086还早的Z80芯片做控制。 NXP新研发出来的ARM芯片从来不敢在欧美卖,先卖到中国来,因为他们知道这肯定有bug,除问题在欧美是要赔个倾家荡产的,在中国出问题,那赔的就简单多了。而且中国人喜欢用新的,不管是否会有bug

1. 设置堆栈空间大小

在使用STM32编程时,一般情况下我们不会关注堆栈空间的大小,因为在STM32的启动文件中,已经帮我们预先设置好了堆栈空间的大小。一般默认的启动代码中,Stack栈的大小为:0x400(1024Byte),Heap堆的大小为:0x200(512Byte)。

这也是为什么一个基础的工程编译后,RAM的空间也占用了1.6K左右的原因,因为堆栈的空间均分配在RAM中,可在编译的map文件中查看RAM资源占用的情况。

若工程中使用的局部变量较多,定义的数据长度较大时,若不调整栈的空间大小,则会导致程序出现栈溢出,程序运行结果与预期的不符或程序跑飞。这时我们就需要手动的调整栈的大小。

当工程中使用了malloc动态分配内存空间时,这时分配的空间就为堆的空间。所以若默认的堆空间大小不满足工程需求时,就需要手动调整堆空间的大小。

1. 直接在启动文件中修改堆栈空间的大小,如图1所示的位置;

2. 打开启动文件,点击下方Configuration Wizard,可在Option的设置框中设置堆栈空间的大小。

2. 相关理论补充

bss段:

bss段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。

bss是英文Block Started by Symbol的简称。

bss段属于静态内存分配。

data段:

数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。

数据段属于静态内存分配。

text段:

代码段(code segment/text segment)通常是指用来存放程序执行代码的一块内存区域。

这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读(某些架构也允许代码段为可写,即允许修改程序)。

在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。

堆(heap):

堆是用于存放进程运行中被动态分配的内存段,它的大


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11817067.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存