Yilin Sun
6baf4427ce
Signed-off-by: Yilin Sun <imi415@imi.moe> |
||
---|---|---|
.. | ||
armgcc | ||
FreeRTOSConfig.h | ||
board.c | ||
board.h | ||
clock_config.c | ||
clock_config.h | ||
dcd.c | ||
dcd.h | ||
evkbimxrt1050_sdram_init.jlinkscript | ||
freertos_mutex.c | ||
freertos_mutex_v3_14.xml | ||
pin_mux.c | ||
pin_mux.h | ||
readme.md |
readme.md
Overview
This document explains the freertos_mutex example. It shows how mutex manage access to common resource (terminal output).
The example application creates two identical instances of write_task. Each task will lock the mutex before printing and unlock it after printing to ensure that the outputs from tasks are not mixed together.
The test_task accept output message during creation as function parameter. Output message have two parts. If xMutex is unlocked, the write_task_1 acquire xMutex and print first part of message. Then rescheduling is performed. In this moment scheduler check if some other task could run, but second task write_task+_2 is blocked because xMutex is already locked by first write task. The first write_task_1 continue from last point by printing of second message part. Finaly the xMutex is unlocked and second instance of write_task_2 is executed.
SDK version
- Version: 2.15.000
Toolchain supported
- IAR embedded Workbench 9.40.1
- GCC ARM Embedded 12.2
- Keil MDK 5.38.1
- MCUXpresso 11.8.0
Hardware requirements
- Mini/micro USB cable
- EVKB-IMXRT1050 board
- Personal Computer
Board settings
No special settings are required.
Prepare the Demo
- Connect a USB cable between the host PC and the OpenSDA USB port on the target board.
- Open a serial terminal with the following settings:
- 115200 baud rate
- 8 data bits
- No parity
- One stop bit
- No flow control
- Download the program to the target board.
- Either press the reset button on your board or launch the debugger in your IDE to begin running the demo. Running the demo ================ After the board is flashed the Tera Term will start periodically printing strings synchronized by mutex.
Example output: "ABCD | EFGH" "1234 | 5678" "ABCD | EFGH" "1234 | 5678"