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 或 http://opensource.org/licenses/MIT)
根据您的选择。
贡献
除非您明确说明,否则根据Apache-2.0许可证定义,您有意提交的任何贡献,包括但不限于以下内容,都应以上述双重许可方式发布,不附加任何额外条款或条件。
依赖项
~0.3-1.7MB
~26K SLoC