STM32
直播中

李秀珍

7年用户 944经验值
私信 关注
[问答]

stm32f103rbt6加上exfuns_init()函数就空间不够用了,有什么好的建议?

主芯片用的STM32f103rbt6
加上exfuns_init()函数就空间不够用了,有什么好的建议?

板子已实现u盘功能。我想通过串口使用mf_scan_files("0:")之类的命令。但主函数中加入初始化语句就已经容量不够了。

回帖(1)

贾飞小

2024-5-17 18:09:20
当STM32F103RBT6的闪存空间不足以容纳所有代码时,可以尝试以下方法来解决问题:

1. **优化代码**:检查代码中是否有不必要的函数或变量,将它们删除或合并以减少空间占用。

2. **使用外部存储器**:如果可能,可以考虑使用外部存储器(如SD卡或SPI Flash)来存储部分代码或数据,从而减轻主芯片的存储压力。

3. **使用更小的库**:检查是否使用了大型库或函数,尝试寻找更小的替代方案。

4. **模块化设计**:将程序划分为多个模块,仅在需要时加载和初始化特定模块,以减少同时占用的闪存空间。

5. **使用外部程序存储器**:如果STM32F103RBT6支持外部程序存储器,可以考虑使用外部存储器来存储部分代码。

6. **升级硬件**:如果以上方法都无法满足需求,可以考虑升级到具有更大闪存空间的STM32芯片,如STM32F103RCT6。

7. **使用代码压缩技术**:尝试使用代码压缩技术(如LTO - Link Time Optimization)来减小最终生成的二进制文件大小。

8. **减少初始化函数的调用**:如果exfuns_init()函数占用了大量空间,尝试分析其内部实现,看看是否有可以优化或删除的部分。

9. **使用串口通信**:如果mf_scan_files("0:")之类的命令可以通过串口发送,那么可以考虑将这部分功能实现为外部程序,通过串口与STM32F103RBT6进行通信。

10. **固件升级**:如果硬件升级不可行,可以考虑将固件分成多个版本,逐步升级,以避免一次性占用过多空间。

通过尝试上述方法,应该可以找到一种或多种解决方案来解决STM32F103RBT6的闪存空间不足问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分