精品国产一区在线_av无码中文字幕无码王_天海翼三点刺激高潮不停_好硬好大好爽视频_欧美高清一区三区在线专区_香蕉黄色片

國產單片機體驗 Rust 多任務異步操作系統

在前面幾篇文章中,我們已經知道如何點亮一個 LED 燈,那么在這一篇,我們即將提升難度,在不同的任務中點燈,感受并行編程的快樂。

請在你感到好奇或疑惑的地方修改代碼!

 examples/embassy_blinky.rs

//! 在不同的任務中閃爍不同的 LED, 學習多任務操作
//!

#![no_std]
#![no_main]

use embassy_executor::Spawner;
use embassy_time::Timer;
use embedded_hal::digital::v2::ToggleableOutputPin;
use hal::gpio::{Output, PinIoType, PinSpeed};
use py32f030_hal::{
    selfas hal,
    gpio::{AnyPin, Pin},
};

use {defmt_rtt as _, panic_probe as _};

#[embassy_executor::task(pool_size = 2)]
asyncfn run_led(led: AnyPin, delay_ms: u64) {
    letmut led = Output::new(led, PinIoType::PullDown, PinSpeed::Low);
    loop {
        let _ = led.toggle();
        Timer::after_millis(delay_ms).await;
    }
}

#[embassy_executor::main]
asyncfn main(spawner: Spawner) {
    let p = hal::init(Default::default());

    defmt::info!("Testing the flashing of different LEDs in multi-tasking.");

    let gpioa = p.GPIOA.split();

    // spawner.must_spawn(run_led(gpioa.PA9.degrade(), 1000));
    // spawner.must_spawn(run_led(gpioa.PA10.degrade(), 2000));

    spawner.spawn(run_led_1(gpioa.PA9.degrade(), 1000)).unwrap();
    spawner.spawn(run_led_1(gpioa.PA10.degrade(), 500)).unwrap();

    loop {
        Timer::after_secs(2).await;
    }
}

也許你有疑惑的地方

  1. pool_size = 2  表示異步任務 async fn run_led(led: AnyPin, delay_ms: u64) 最多能被 2 個任務使用
  2. async 表示函數為異步函數
  3. embassy_executor::task 表示將定義一個異步任務
  4. Spawner 是異步執行器框架提供的一個類型,它的主要職責是在執行器的任務調度環境中創建新的異步任務。它封裝了任務創建的具體細節和邏輯,例如確定任務應該在哪個任務池中運行、分配任務所需的資源(如棧空間等)以及將任務注冊到執行器的任務隊列中以便后續調度執行。
  5. embassy 的 異步入口函數定義為:
#[embassy_executor::main] 
async fn main(spawner: Spawner) {
}
  1. spawner.spawn()spawn 方法是將一個異步函數(或異步閉包)包裝成一個任務,并將其放入異步執行器的任務調度隊列中,以便在合適的時候執行。這個方法是異步執行器框架提供的關鍵接口,用于啟動新的異步任務并將其納入任務管理體系。
  2. let _ = led.toggle(); 用于避免編譯器報警,忽視 led.toggle() 的返回結果
  3. 在例程中實際會有 3 個任務運行
聲明:本內容為作者獨立觀點,不代表電子星球立場。未經允許不得轉載。授權事宜與稿件投訴,請聯系:editor@netbroad.com
覺得內容不錯的朋友,別忘了一鍵三連哦!
贊 2
收藏 3
關注 13
成為作者 賺取收益
全部留言
0/200
成為第一個和作者交流的人吧
主站蜘蛛池模板: 亚洲天堂爱爱 | 黄色特级片 | 欧美不卡在线观看 | 国产精品久久久久久一区二区三区 | 无码国产精品久久一区免费 | 国产高清av在线 | 青青草福利 | 久久精品日产第一区二区三区乱码 | 亚洲一二区av | 日本高清久久久 | 亚洲成亚洲乱码一二三四区软件 | 亚洲3p激情在线观看 | 国产熟女一区二区三区 | 成人亚洲综合色就1024 | 风间由美无打码在线观看 | 丰满年轻岳欲乱中文字幕 | 婷婷色六月天 | 内地性生生活影视大全 | 暴虐SM灌浣肠调教A片男男 | 纲手被扒开腿坐做视频 | 国产免费破外女真实出血视频 | 国产aaaa视频| 欧美一线高本道高清免费 | 日韩精品免费一线在线观看 | 风间由美无打码在线观看 | av在线影院| 天天操夜夜操免费视频 | 国产精品第十页 | 毛片com | 超碰公开在线观看 | 婷婷五月开心色婷在线尤物 | 哚哚在线观看 | 蜜臀av无码一二三 | 淫片特黄特黄特黄 | chinese壮直男gay国产 | 最新毛片网 | 涩涩涩涩涩涩涩涩涩 | 野狼第一精品社区 | 国产不卡一 | 欧美肥妇毛多bbwbbw | 玖玖热综合一区二区三区 |