#串口 # #异步

nightly 无std cntrlr

简单、异步嵌入式框架

1个不稳定版本

0.1.0 2021年1月3日

#768 in 异步

AGPL-3.0-or-later

290KB
6.5K SLoC

Cntrlr - 简单、异步嵌入式

Cntrlr是一个一体化的嵌入式平台,用于在常见的爱好者开发板上编写简单的异步应用程序。

示例

向串口发送Hello World

#![no_std]
#![no_main]

use cntrlr::prelude::*;
use core::future::pending;

#[entry]
async fn main() -> ! {
    serial_1().enable(9600).unwrap();
    writeln!(serial_1(), \"Hello, World\").await.unwrap();

    // Hang forever once we've sent our message
    pending().await
}

闪烁LED

#![no_std]
#![no_main]

use cntrlr::prelude::*;

#[entry]
async fn main() -> ! {
    pin_mode(13, PinMode::Output);
    loop {
        digital_write(13, true);
        sleep(500).await;
        digital_wrrite(13, false);
        sleep(500).await;
    }
}

lib.rs:

用于简单异步嵌入式编程的库

use cntrlr::prelude::*;
use core::futures::pending;

#[entry]
async fn main() -> ! {
   serial_1().enable(9600);
   writeln!(serial_1(), "Hello, World").await.expect("Failed to message");
   pending().await
}

有关API概述,请查看prelude模块。这是Cntrlr提供的基本功能集,并为大多数应用程序提供功能。

有关特定硬件的功能,每个支持的板和微控制器在[hw]下都有自己的模块。请注意,目前这些低级API存在安全和易用性问题,并且它们提供的功能并不多于实现主要Cntrlr API所需的。它们将随着时间的推移而扩展,并将为了正确性和易用性而改进。

依赖项

~1.5MB
~36K SLoC