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嵌入式开发

Download history 6079/week @ 2024-04-29 4668/week @ 2024-05-06 4598/week @ 2024-05-13 5036/week @ 2024-05-20 3688/week @ 2024-05-27 3200/week @ 2024-06-03 3886/week @ 2024-06-10 3626/week @ 2024-06-17 3992/week @ 2024-06-24 2922/week @ 2024-07-01 3475/week @ 2024-07-08 4614/week @ 2024-07-15 5887/week @ 2024-07-22 4786/week @ 2024-07-29 6245/week @ 2024-08-05 5459/week @ 2024-08-12

每月 22,689 次下载
用于 20 crates

MIT/Apache

29KB
502

esp-println

Crates.io docs.rs MSRV Crates.io Matrix

一个库,为 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")

功能

  • 每个支持的目标都有一个功能:esp32esp32c2esp32c3esp32c6esp32h2esp32s2esp32s3
    • 必须启用其中一个功能。
    • 一次只能启用这些功能中的一个。
  • 每个支持的通信方法都有一个功能:uartjtag-serialauto
    • 一次只能启用这些功能中的一个。
  • no-op:不打印任何内容。
  • log:使用 log 启用日志记录。
  • colors:启用彩色日志。
    • 仅在启用log功能时有效。
  • critical-section:启用临界区。
  • defmt-espflash:此功能旨在与espflash一起使用,请参阅-L/--log-format参数的flashmonitor子命令,以及cargo-espflash。使用rzCOBS编码并添加帧。

默认功能

默认情况下,我们使用autocritial-sectioncolors功能。这意味着它将自动检测是否需要打印到UART或JTAG-Serial,使用临界区,并且输出的消息将是彩色的。如果我们想使用不是auto默认的通信方式,我们需要禁用默认功能

日志记录

启用log功能后,您可以使用以下方式初始化简单的记录器

init_logger(log::LevelFilter::Info);

存在一个默认功能colors,它启用了彩色日志输出。

此外,您还可以使用

init_logger_from_env();

在这种情况下,使用了以下环境变量

  • ESP_LOGLEVEL设置日志级别,可以使用traceinfo等值。
  • 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许可证定义,您有意提交的任何贡献,包括但不限于以下内容,都应以上述双重许可方式发布,不附加任何额外条款或条件。

依赖项

~0.3-1.7MB
~26K SLoC