[其他ST产品] 如何在 Cube IDE 中使用 Arduino 字符串对象

[复制链接]
380|12
内核558 发表于 2025-12-8 17:32 | 显示全部楼层 |阅读模式

有人知道如何在 Cube IDE 中导入 Arduino 的字符串对象,或者我该如何自行创建此类对象吗?我在 Arduino 相关文件中,找不到关于此类对象构造实现的文件。
这种对象是如何实现的?有没有相关文档?

公羊子丹 发表于 2025-12-9 08:28 | 显示全部楼层
我之前也折腾过把 Arduino 的 String 拿到 STM32 上用,最后发现不太现实,因为它依赖 Arduino Core 里面一堆底层实现,单独拎出来很难完整跑起来,尤其是内存管理那块。
周半梅 发表于 2025-12-9 08:29 | 显示全部楼层
其实 Arduino 的 String 就是个简单的 C++ 类,你可以去 ArduinoCore-API 里看看源码,它大部分功能都是基于 malloc 和 realloc 做的动态字符串操作,不是什么黑魔法。
帛灿灿 发表于 2025-12-9 08:30 | 显示全部楼层
如果你只是想在 STM32 上用类似的字符串对象,其实自己写一个轻量版更靠谱,比如用 std::string 或者自己封一层结构体。CubeIDE 支持 C++,编译器默认就带 STL,比 Arduino 的 String 强大得多。
童雨竹 发表于 2025-12-9 08:31 | 显示全部楼层
我怀疑你没找到实现文件,是因为 Arduino 平台不同 core 不同,String.cpp 的位置会有点不一样,你可以在 Arduino15 下面全局搜一下,基本都能找出来。
万图 发表于 2025-12-9 08:32 | 显示全部楼层
不过提醒一下,String 在 Arduino 圈里口碑一般,经常被吐槽会碎片化 SRAM,放到 STM32 这种长期运行的固件里可能更不保险,所以慎用动态分配的版本。
Wordsworth 发表于 2025-12-9 08:33 | 显示全部楼层
你也可以考虑 tiny-string 或者 embedded-template-library(ETL)里面的字符串类,都是为嵌入式环境优化过的,不像 STL 那样吃资源。
Bblythe 发表于 2025-12-9 08:34 | 显示全部楼层
也有人习惯把所有 FreeRTOS 句柄放在一个 global_vars.c 里,所有模块共用一个头文件,虽然看起来不太优雅,但用起来确实方便,而且不怕被自动生成覆盖。
Pulitzer 发表于 2025-12-9 08:36 | 显示全部楼层
说实话我后来全换成 C 形式的 buffer 加 snprintf,虽然原始点,但稳定性最强,调试也简单不少,嵌入式环境稳定比优雅更重要。
Uriah 发表于 2025-12-9 08:37 | 显示全部楼层
另外你可以试一下用 C++ 的 std::string,但记得把 -fno-exceptions 和 -fno-rtti 配好,否则会引入一堆你不想要的代码体积。
Clyde011 发表于 2025-12-9 08:38 | 显示全部楼层
要是你只是为了方便字符串拼接,用一个小型 ring buffer 或者自己写个 append 函数,比搬整个 Arduino 字符串系统更快搞定。
wahahaheihei 发表于 2025-12-11 09:36 | 显示全部楼层
Arduino 的 String 类是开源的,你可以提取其核心代码,剥离对 Arduino 特定 API 的依赖,直接在 CubeIDE 中使用。
huangcunxiake 发表于 2026-2-9 13:59 | 显示全部楼层
STM32CubeIDE 默认使用标准 C/C++ 开发,本身不自带 Arduino 的 String 类,但我们可以通过移植 Arduino 核心的 String 相关代码,或者使用兼容的实现来达到相同效果。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

192

主题

193

帖子

0

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