主要观点:在atsamd-hal
项目中,async/await
支持经历了较长时间才实现。作者发现embassy
框架后,开始思考在HAL
中支持异步编程,最终在 2024 年 11 月将其合并。如今大多数异步HAL
与执行器的耦合度降低,atsamd-hal
也可与多种执行器一起使用。async/await
可在单核心系统(如微控制器)中利用并发,通过Future
、async
关键字、await
关键字和执行器等三个构建块实现协作式多任务处理,同时需要反应堆来监听外部事件并唤醒执行器,微控制器的中断可用于此目的。文中还以atsamd-hal
中的外部中断控制器为例,详细介绍了实现异步支持的步骤,包括中断处理程序绑定、wait()
方法实现和中断处理程序实现等,并给出了同步和异步版本的使用示例,展示了异步版本的简洁性和可读性。
关键信息:
async/await
在atsamd-hal
项目中的实现历程及最终合并时间。- 异步编程的三个构建块及其作用。
- 微控制器中实现异步支持的具体步骤和相关代码。
- 同步和异步版本的使用示例及对比。
重要细节:
Future
trait 的定义及Poll
枚举的含义。async
函数是返回Future
的语法糖,await
关键字用于驱动Future
前进。- 不同的执行器在嵌入式和普通计算世界中的情况。
- 中断处理程序绑定的相关 trait 和宏的使用。
- 在
wait()
方法中如何处理中断和注册唤醒器。 - 中断处理程序的实现细节及与
Future
的交互。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。