[STM32L1] flash内存满了

[复制链接]
 楼主| 内核558 发表于 2025-7-30 21:04 | 显示全部楼层 |阅读模式
使用STM32L011K4(具有16KB闪存)。我编写了一个简单的代码来实现I2C和带PWM的定时器,但遇到了内存溢出的问题。
我仅仅启用了以下功能:

void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_I2C1_Init(void);
static void MX_TIM2_Init(void);

公羊子丹 发表于 2025-7-31 13:16 | 显示全部楼层
L011K4确实只有16KB Flash,你如果用了HAL库,那分分钟就把Flash吃光了。
周半梅 发表于 2025-7-31 13:16 | 显示全部楼层
我也踩过这坑,推荐你改用LL库,代码量会小很多,省下不少空间。
帛灿灿 发表于 2025-7-31 13:17 | 显示全部楼层
有没有打开printf或浮点支持?这些一打开直接飙升几KB。
童雨竹 发表于 2025-7-31 13:18 | 显示全部楼层
可以先看下.map文件,确认到底是哪个模块占的空间最多。
万图 发表于 2025-7-31 13:18 | 显示全部楼层
HAL库虽然方便,但代价就是大,像这种小Flash的芯片,真得精打细算。
Wordsworth 发表于 2025-7-31 13:19 | 显示全部楼层
如果I2C只是主模式发几个字节,其实裸写寄存器比HAL还快,占空间又小。
Bblythe 发表于 2025-7-31 13:20 | 显示全部楼层
你也可以考虑优化编译器设置,比如启用 -Os 选项,专门优化代码大小。
Pulitzer 发表于 2025-7-31 13:21 | 显示全部楼层
有时候编译器链接了不需要的调试函数,可以把 USE_FULL_ASSERT 给关掉试试。
Uriah 发表于 2025-7-31 13:21 | 显示全部楼层
我之前干脆把系统时钟配置函数都精简掉,能省上几百字节Flash。
Clyde011 发表于 2025-7-31 13:22 | 显示全部楼层
实在不行可以升级用L011K6或直接跳到L031系列,也有便宜大碗的型号可选。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

37

主题

37

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部