MicroPython-ESP32 task_create() 指定核心
时间: 2024-03-18 09:42:33 浏览: 94
在 MicroPython-ESP32 中,可以使用 `task_create()` 函数创建一个任务,并指定该任务运行的核心。指定核心可以让任务在指定的核心上独立运行,避免与其他任务在同一个核心上争夺资源,提高系统的运行效率。
使用 `task_create()` 函数指定核心时,需要在任务函数中调用 `port_set_affinity()` 函数来指定任务运行的核心。该函数的原型如下:
```c
void port_set_affinity(int core_id);
```
参数说明:
- `core_id`:指定任务运行的核心,可以是 0 或 1。
下面是一个示例代码,演示了如何使用 `task_create()` 函数指定任务运行的核心:
```python
import _thread
def task_func(arg):
import machine
core_id = arg
print("Task is running on core", core_id)
machine.disable_irq()
while True:
pass
_thread.start_new_thread(task_func, (0,), {'cores': [1]})
_thread.start_new_thread(task_func, (1,), {'cores': [0]})
```
在这个示例中,我们创建了两个任务,一个在核心 0 上运行,一个在核心 1 上运行。在任务函数中,我们首先打印了任务正在运行的核心,然后禁用了中断,让任务一直循环执行,防止任务结束。在 `_thread.start_new_thread()` 函数中,我们使用 `{'cores': [1]}` 的方式传递了一个参数,指定了任务运行的核心。如果不指定核心,则默认在第一个核心上运行。
阅读全文