15 个版本 (9 个重大更改)
| 0.10.0 | 2024 年 7 月 15 日 |
|---|---|
| 0.9.1 | 2024 年 3 月 11 日 |
| 0.9.0 | 2024 年 2 月 7 日 |
| 0.8.0 | 2023 年 12 月 20 日 |
| 0.2.1 | 2022 年 7 月 15 日 |
#62 在 嵌入式开发
每月 22,689 次下载
用于 20 crates
29KB
502 行
esp-println
一个库,为 Espressif 设备提供 print!、println!、dbg! 实现和日志功能。
- 支持所有 Espressif ESP32 系列设备。
- 支持不同的通信方法
- UART(默认)
- JTAG-Serial(仅适用于 ESP32-C3、ESP32-C6、ESP32-H2、ESP32-S3)
- No-op:将打印转换为无操作
- 支持
defmt后端
使用方法
esp-println = { version = "0.9.1", features = ["esp32c2"] }
或 cargo add esp-println --features esp32c2 确保指定您的目标设备作为功能。
然后在您的程序中
use esp_println::println;
现在您可以像往常一样 println!("Hello world")。
功能
- 每个支持的目标都有一个功能:
esp32、esp32c2、esp32c3、esp32c6、esp32h2、esp32s2和esp32s3。- 必须启用其中一个功能。
- 一次只能启用这些功能中的一个。
- 每个支持的通信方法都有一个功能:
uart、jtag-serial和auto。- 一次只能启用这些功能中的一个。
no-op:不打印任何内容。log:使用log包 启用日志记录。colors:启用彩色日志。- 仅在启用
log功能时有效。
- 仅在启用
critical-section:启用临界区。defmt-espflash:此功能旨在与espflash一起使用,请参阅-L/--log-format参数的flash或monitor子命令,以及cargo-espflash。使用rzCOBS编码并添加帧。
默认功能
默认情况下,我们使用auto、critial-section和colors功能。这意味着它将自动检测是否需要打印到UART或JTAG-Serial,使用临界区,并且输出的消息将是彩色的。如果我们想使用不是auto默认的通信方式,我们需要禁用默认功能。
日志记录
启用log功能后,您可以使用以下方式初始化简单的记录器
init_logger(log::LevelFilter::Info);
存在一个默认功能colors,它启用了彩色日志输出。
此外,您还可以使用
init_logger_from_env();
在这种情况下,使用了以下环境变量
ESP_LOGLEVEL设置日志级别,可以使用trace、info等值。ESP_LOGTARGETS如果设置,您应提供需要记录的crates的名称(可选带有路径,例如esp_wifi::compat::common),用,分隔,并且之间没有额外的空白。
如果简单的记录器实现不能满足您的需求,您可以在esp-println的基础上实现自己的记录器。请参阅实现记录器部分记录器文档
defmt
使用defmt-espflash功能,esp-println将安装一个defmt全局记录器。记录器将输出到与println!()相同的流,并添加帧字节,即使与其他非defmt输出也可以使用。使用defmt-espflash功能将自动使用rzCOBS编码,并且不允许更改编码。
请按照defmt手册的设置说明来设置defmt。请记住,全局记录器已经由esp-println为您安装!
请注意,defmt在发布时不提供MSRV保证,因此当此功能启用时,我们无法提供任何MSRV保证。有关更多信息,请参阅defmt的README中的MSRV部分
https://github.com/knurling-rs/defmt?tab=readme-ov-file#msrv
解决链接器错误
如果您遇到链接器错误,请确保您的代码中有对esp_println的引用。如果您没有直接使用esp_println,您需要将例如use esp_println as _;添加到您的导入语句中。这确保编译器不会删除全局记录器。
许可证
许可协议为以下之一
- Apache许可证,版本2.0(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT 或 https://open-source.org.cn/licenses/MIT)
根据您的选择。
贡献
除非您明确说明,否则根据Apache-2.0许可证定义,您有意提交的任何贡献,包括但不限于以下内容,都应以上述双重许可方式发布,不附加任何额外条款或条件。
依赖项
~0.3-1.7MB
~26K SLoC