Basic thread manipulation
Overview
This example demonstrates spawning multiple threads using
K_THREAD_DEFINE()
. It spawns three threads. Each thread is then defined
at compile time using K_THREAD_DEFINE.
The first two each control an LED. These LEDs, led0
and led1
, have
loop control and timing logic controlled by separate functions.
blink0()
controlsled0
and has a 100ms sleep cycleblink1()
controlsled1
and has a 1000ms sleep cycle
When either of these threads toggles its LED, it also pushes information into a FIFO identifying the thread/LED and how many times it has been toggled.
The third thread uses printk()
to print the information added to the
FIFO to the device console.
Requirements
The board must have two LEDs connected via GPIO pins. These are called “User
LEDs” on many of Zephyr’s Supported Boards and Shields. The LEDs must be configured using the
led0
and led1
devicetree aliases, usually in the
BOARD.dts file.
You will see one of these errors if you try to build this sample for an unsupported board:
Unsupported board: led0 devicetree alias is not defined
Unsupported board: led1 devicetree alias is not defined
Building
For example, to build this sample for 96Boards Carbon:
west build -b 96b_carbon/stm32f401xe samples/basic/threads
west flash
Change 96b_carbon/stm32f401xe
appropriately for other supported boards.