最近在用stm32做电子相册实验,开发板是安富莱的,实验是:stm32f103zet6 + SDIO + FATFS +FSMC ->TFT,目前已经能读取SD卡里面的BMP图片到TFT上显示了。
而stm32f103zet6有64K的ram(试验中还没有使用外部SRAM),现在想充分利用芯片自身的资源,定义一个尽量大的buffer,以便一次性在SD卡中读取更多的字节数来提高速度。
我在在实验中一步一步的增大buffer,增大到一定程度时,出现了hard default。后来我将堆栈增大,他又正常了。
目前定义了5120个字节的数组来缓存数据,还只是占芯片资源的一小部分,想继续增大,但不知道如何设置堆栈大小才合适,所以想问下大家怎么计算堆栈的大小,谢谢!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
编译出来的outpu里面,有个工程名.html的文件,会列出最大函数调用路径所消耗的stack估算。
-----------------------------------------------------------------------
正解,文件找到了,谢谢!!
1.楼主,请问STM32的堆栈大小设置为多少合适呢?
2.全局数组的大小最大可以定义为多少呢?是不是只要不超出SRAM的范围就行,还是数组的大小跟堆栈的大小相关?
5120这个大小略显奇葩....应该是512的2次倍数...比如4096 8192什么的....
另外...
你究竟是要放堆里...还是要放栈里?....这是两个地方啊....
这种Buffer放在堆里明显比栈里合适的多....
我测试的是8192的时候基本提升就很小了...4096更具性价比...
一周热门 更多>