2个版本 (1个稳定版)
1.0.0 | 2021年5月13日 |
---|---|
0.1.0 | 2020年8月9日 |
#18 在 #crc
3,918 每月下载量
在 3 个crate中使用(通过 smbus-pec)
18KB
144 代码行
Rust可移植CRC计算宏
此crate提供定义可移植的CRC-8算法实现的宏,参数在编译时直接提供,无需任何依赖。适用于no_std
。
与其他crate的比较
存在许多实现CRC算法的crate,但它们的目的是可配置的、通用的、使用SIMD指令进行加速等。
此crate提供定义可移植且不可配置的CRC-8算法实现的宏,参数在编译时提供(可选地使用预计算的查找表)且无需任何依赖。
这应该允许编译器进行良好的优化,并允许在具有最小代码膨胀的任何目标架构中使用该算法。
此外,此crate还提供在构建时生成查找表的宏。
这使得此crate特别适合用于no_std
环境。
使用方法
use embedded_crc_macros::crc8;
crc8!(fn pec, 7 /* x^8+x^2+x+1 */, 0, "SMBus Packet Error Code");
const ADDRESS: u8 = 0x5A;
const REGISTER: u8 = 0x06;
fn main() {
let crc = pec(&[ADDRESS << 1, REGISTER, 0xAB, 0xCD]);
println!("PEC: {}", crc); // prints 95
}
支持
有关问题、问题、功能请求、其他更改或只是反馈,请在github项目中提交问题。
许可证
许可方式为以下两种之一
- Apache许可证,版本2.0 (LICENSE-APACHE或http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT或http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确表示,否则任何有意提交给作品并包含在您的工作中的贡献(根据Apache-2.0许可证定义),都应按照上述双重许可,无需任何附加条款或条件。