这个优化选项正是用来 “拯救” FLASH 空间不足的关键手段而且效果非常明显。一、优化选项的作用你截图里的这些选项是 Keil 编译器的代码优化级别它们的核心作用就是减小代码体积或提升执行速度选项含义对体积的影响-O0不优化方便调试体积最大-O1基础优化体积明显减小-O2进一步优化体积更小-O3激进优化体积最小但可能影响调试-Ofast追求最快速度体积可能变大-Os balanced平衡优化兼顾体积和速度体积显著减小-Oz image size极致追求最小代码体积体积最小是救急首选-Omax最大程度优化通常用于速度体积不定二、如何操作推荐步骤首选-Oz image size这是专门为了最小化代码体积设计的优化级别能最大程度压缩代码直接缓解 FLASH 空间不足的问题。操作路径Project→Options for Target→C/C→Optimization→ 选择-Oz image size。备选-Os balanced如果使用-Oz后出现代码执行异常比如时序问题可以退而求其次选择-Os balanced它在保证代码体积大幅减小的同时也能维持较好的执行效率。重新编译修改优化级别后执行一次Rebuild完全重编译然后观察编译输出的Program Size你会发现Code段的字节数明显减少。三、注意事项调试难度增加优化级别越高代码和原始 C 语言的对应关系就越模糊使用调试器单步调试时可能会出现 “跳行” 或变量值无法查看的情况。如果需要调试建议先切回-O0。时序敏感代码如果你的代码中有严格的时序要求比如 CAN 通信、SPI 时序过高的优化级别可能会改变代码执行顺序导致功能异常。这种情况下-Os balanced通常是更稳妥的选择。四、总结通过将优化级别调整为-Oz image size你可以显著减小代码体积很可能直接解决当前的 FLASH 空间不足问题。如果优化后仍有问题再配合之前提到的 “移除冗余文件” 或 “修改链接脚本” 的方法就能彻底解决。