精品国产一区在线_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
成為第一個和作者交流的人吧
主站蜘蛛池模板: 欧美xxxx成人免费网站 | 动漫精品h | 91av免费看| 亚洲人成7777 | 国产乱子一区二区 | 国产精品扒开腿爽爽爽的视频动漫 | 日韩av在线资源 | 欧美日韩一区二区三区四区 | 我要发达粤语原版在线观看免费 | xxxx18一21sexhd | 五月狠狠亚洲小说专区 | 99精产国品一二三产区区别网站 | 波多野结衣一区二区免费视频 | 欧美体验区| 日本69熟| 精品国产乱码久久久久久闺蜜 | 欧美3dxxxsex moviesxxx | 日韩天堂| 91社在线播放 | 久久精品国产亚洲AV麻豆王友容 | 久久久精品久久久久久96 | 美男被强行糟蹋np各种play | 哪里有免费的黄色网址 | 亚州性无码不卡免费视频 | 欧美三级午夜理伦三级 | 99精品色 | 国产一级18片视频 | 精品欧美视频 | 穿越时空的少女免费观看动漫日语 | 青草草在线观看免费视频 | 国产又黄又粗又爽又色的视频 | 国产精品成人69xxx免费视频 | 国产性色的免费视频网站 | 狂野少女免费观看完整电视高清 | 亚洲一区二区三区四区在线字幕 | 69式高清视频在线观看 | 极品大长腿啪啪高潮露脸 | 最美女人体内射精一区二区 | 红桃视频免费入口 | 日韩欧美大片 | 国产精品99久久一区二区 |