打印
[STM32F0]

F0想配个小OLED菜单,RAM不太够咋办?

[复制链接]
楼主: Bblythe
手机看帖
扫描二维码
随时随地手机跟帖
21
elsaflower| | 2025-6-4 15:34 | 只看该作者 回帖奖励 |倒序浏览
将菜单分页加载,每次仅处理当前页面的数据。

使用特权

评论回复
22
robincotton| | 2025-6-4 16:17 | 只看该作者
使用const char*而非动态分配的字符串。

使用特权

评论回复
23
jackcat| | 2025-6-4 17:14 | 只看该作者
动态分配和释放需严格管理,建议使用固定大小的内存池

使用特权

评论回复
24
codingtuzi| | 2025-6-4 22:27 | 只看该作者
没有啥太大的问题,OLED 128 *64 用不了那么多的RAM。
把RAM复用就行了

使用特权

评论回复
25
timfordlare| | 2025-6-5 12:28 | 只看该作者
如果菜单内容较多,可以考虑分页显示,每次只加载和显示当前页的内容,减少内存占用。

使用特权

评论回复
26
usysm| | 2025-6-5 14:10 | 只看该作者
在 RAM 中保留当前显示页面的数据,切换页面时释放旧页面内存。

使用特权

评论回复
27
uytyu| | 2025-6-5 15:01 | 只看该作者
将不常用的变量定义为局部变量,或使用static限制作用域。

使用特权

评论回复
28
claretttt| | 2025-6-5 15:52 | 只看该作者
将菜单分为多页,每页仅存储当前可见项的索引和数据。
通过按键切换页面时,重新加载对应页的数据。

使用特权

评论回复
29
uptown| | 2025-6-5 16:42 | 只看该作者
使用单色图标、简化字体或压缩位图数据。

使用特权

评论回复
30
burgessmaggie| | 2025-6-5 17:30 | 只看该作者
对于布尔值或小范围整数,可以使用位字段来节省内存。

使用特权

评论回复
31
usysm| | 2025-6-5 18:20 | 只看该作者
避免中间缓冲区,直接操作 OLED 显存。

使用特权

评论回复
32
uytyu| | 2025-6-5 19:11 | 只看该作者
将菜单功能分解为多个模块,按需加载和执行,避免一次性占用过多RAM。例如,仅当用户进入某个子菜单时,才加载该子菜单相关的数据。

使用特权

评论回复
33
louliana| | 2025-6-5 20:09 | 只看该作者
直接操作OLED显存 ,避免额外RAM占用。

使用特权

评论回复
34
eefas| | 2025-6-5 20:52 | 只看该作者
尽量减少全局变量的数量和大小,可以将一些全局变量改为局部变量或使用动态分配。

使用特权

评论回复
35
tifmill| | 2025-6-5 21:39 | 只看该作者
在编译时选择合适的优化选项,可以减少代码大小和内存使用。

使用特权

评论回复
36
robertesth| | 2025-6-5 22:27 | 只看该作者
通过const修饰。              

使用特权

评论回复
37
sesefadou| | 2025-6-6 09:08 | 只看该作者
在链接脚本中预留栈溢出检测区,运行时检查是否溢出。

使用特权

评论回复
38
mikewalpole| | 2025-6-6 09:42 | 只看该作者
尽量减少OLED的全屏刷新次数,可以只刷新需要更新的部分。

使用特权

评论回复
39
jobszheng| | 2025-6-6 10:05 | 只看该作者
这里缓存使用一个静态数组来保存。不要使用栈。

使用特权

评论回复
40
everyrobin| | 2025-6-6 10:24 | 只看该作者
选择轻量级OLED驱动库(如u8g2的精简版),避免依赖复杂图形库。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则