99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人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 是異步執行器框架提供的一個類型,它的主要職責是在執行器的任務調度環境中創建新的異步任務。它封裝了任務創建的具體細節和邏輯,例如確定任務應該在哪個任務池中運行、分配任務所需的資源(如??臻g等)以及將任務注冊到執行器的任務隊列中以便后續調度執行。
  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黄色小说| 草草草视频 | 四虎新网址 | 东京一本到熟无码免费视频 | 久久艹精品 | 真实国产乱子伦精品视频 | 国产日韩精品SUV | 国产成人久久精品激情91 | 91av视频免费在线观看 | 欧美日韩高清一区二区三区 | 2020亚洲一卡二卡三卡 | 国产精品人妻无码一区二区三区 | 国产不卡一级无码视频 | 内射白浆一区二区在线观看 | 久久艹人人 | 日韩AV无码中文字幕 | 成人免费久久 | 国产在线看片免费视频在线观看 | 亚洲第一香蕉视频 | 国产剧情一区二区三区 | 羞羞答答xxdd在线播放 | 亚洲精品视频在线观看视频 | 国产精品一区亚洲二区日本三区 | 澳门久久久 | 国产一区二区三区别 | 亚洲瑟瑟 | 性色a∨人人爽网站 | 国产精品中文字幕在线观看 | 视频一区视频二区视频三区视频四区国产 | 国产资源第一页 | 97超碰人人干 | 国产精品人妻熟女a8198v久 | 高清性色生活片免费播放网 | 久久精品一二 | 狠狠色狠狠色很很综合很久久 | 欧美日韩国产成人高清视 | 91综合网人人 | 国产精品午夜爆乳美女 | 亚洲日本精品一区 | 国产三级精品三级在专区 |