rtic/book/en/src/by-example/app_task.md

19 lines
767 B
Markdown
Raw Normal View History

2023-01-28 21:57:43 +01:00
<!-- Should probably be removed -->
2021-09-22 13:22:45 +02:00
# Defining tasks with `#[task]`
2021-12-14 22:46:15 +01:00
Tasks, defined with `#[task]`, are the main mechanism of getting work done in RTIC.
2021-09-22 13:22:45 +02:00
2021-12-14 22:46:15 +01:00
Tasks can
2023-01-28 21:57:43 +01:00
* Be spawned (now or in the future)
* Receive messages (message passing)
* Prioritized allowing preemptive multitasking
2021-12-14 22:46:15 +01:00
* Optionally bind to a hardware interrupt
2023-01-28 21:57:43 +01:00
RTIC makes a distinction between “software tasks” and “hardware tasks”. Hardware tasks are tasks that are bound to a specific interrupt vector in the MCU while software tasks are not.
2022-02-20 19:21:25 +01:00
2023-01-28 21:57:43 +01:00
This means that if a hardware task is bound to an UART RX interrupt the task will run every time this interrupt triggers, usually when a character is received.
2021-09-22 13:22:45 +02:00
In the coming pages we will explore both tasks and the different options available.