使用 rust 开发 stm32:前言

更多分享内容可访问我的个人博客

https://www.niuiic.top/

本系列教程全部置于stm32专栏

本文为使用 rust 开发 stm32 系列教程前言。

Why Rust

  1. Rust 特性就不用多介绍了,有个编译器管着有时候比用C到处浪把自己整没了好。
  2. ST官方逐渐停止对C固件库的更新,使用MX感觉没自己写舒服。毕竟它也就生成个初始化代码,虽然看起来挺快,但是实际上自定义snippets可以比它快得多。可能对于不熟悉当前开发板的用户来说可以省去一点看参考手册的麻烦。不过老手可能无所谓。
  3. 尝鲜吧。
  4. 折腾吧(又是和编译器斗智斗勇的一天)。

内容

  1. 不会介绍单片机原理、各外设原理、数电、模电等。这些都可以找书搞定。
  2. 介绍如何搭建stm32的开发环境。
  3. 给出例程供参考使用。大部分例程参考stm32fxxx-hal crate(如stm32f1xx-hal)官方例程,并在官方例程的基础上增加了一些注释,修正了一些错误。可以借鉴不同型号的stm32例程,毕竟固件库的核是一样的。
  4. 本教程定位在固件库的层面上。关于rust 嵌入式底层的玩法请参考
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Rust的std::future是一种表示异步操作结果的类型,它可以在不阻塞线程的情况下等待异步操作完成,并返回结果。下面是使用std::future的基本步骤: 1. 导入future模块:在代码文件的开头添加“use std::future::Future;”语句。 2. 创建异步任务:创建一个异步任务,例如使用async语法创建一个异步函数,返回值类型为Future。 3. 等待异步任务:使用await关键字等待异步任务完成,并获取结果。 下面是一个简单的例子: ```rust use std::future::Future; async fn async_task() -> i32 { 1 + 2 } fn main() { let future = async_task(); // 创建异步任务 let result = futures::executor::block_on(future); // 等待异步任务完成 println!("Result: {}", result); // 打印结果 } ``` 在这个例子中,我们创建了一个异步函数async_task(),返回一个Future,表示一个异步操作。在main函数中,我们调用async_task()创建一个异步任务,并使用futures::executor::block_on()函数等待异步任务完成,并获取结果。最后打印结果。 需要注意的是,使用block_on函数会阻塞当前线程,直到异步任务完成。为了避免阻塞线程,可以使用异步运行时(async runtime)来执行异步任务。Rust提供了多个异步运行时库,例如tokio、async-std、smol等。下面是使用tokio库的例子: ```rust use std::future::Future; use tokio::runtime::Runtime; async fn async_task() -> i32 { 1 + 2 } fn main() { let future = async_task(); // 创建异步任务 let mut rt = Runtime::new().unwrap(); // 创建异步运行时 let result = rt.block_on(future); // 在异步运行时中执行异步任务 println!("Result: {}", result); // 打印结果 } ``` 在这个例子中,我们使用tokio库创建了一个异步运行时,并使用run_until_complete()函数在异步运行时中执行异步任务。这样可以避免阻塞线程,提高程序性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值