================================================================================ 样例使用说明 Sample Description ================================================================================ 功能描述: 此样例演示了FreeRTOS信号量的相关API函数,实现二值信号量、计数型信号量和互斥信号 量三种信号量实验,通过串口log,观察三种信号量的实现过程。 Function descriptions: This sample demonstrates the relevant API functions of FreeRTOS signals to implement three kinds of signaling experiments: binary signals, counting-type signals and mutually exclusive signals, and observes the implementation process of the three kinds of signals through the serial port log. ================================================================================ 测试环境: 测试用板:PY32F403_STK MDK版本:5.28 IAR版本:9.20 GCC版本:GNU Arm Embedded Toolchain 10.3-2021.10 Test environment: Test board: PY32F403_STK MDK Version: 5.28 IAR Version: 9.20 GCC Version: GNU Arm Embedded Toolchain 10.3-2021.10 ================================================================================ 使用步骤: 1. 编译下载程序到MCU,并运行; 2. 通过串口调试助手打印的log信息,观察任务执行过程。 3. 打开宏定义SEMAPHORE_BINRAY,关闭SEMAPHORE_COUNT和SEMAPHORE_MUTEX。 Task1: 任务每隔2s释放一次二值信号量。 Task2: 获取二值信号量,打印获取成功信息。获取失败则进入等待状态。 Task3: 删除任务3。 4. 打开宏定义SEMAPHORE_COUNT,关闭SEMAPHORE_BINRAY和SEMAPHORE_MUTEX。 Task1: 任务每隔2s释放一次计数型信号量。信号量总数加1。总数上限是50。 Task2: 获取计数型信号量,打印获取成功信息。信号量总数减1。 Task3: 删除任务3。 5. 打开宏定义SEMAPHORE_MUTEX,关闭SEMAPHORE_BINRAY和SEMAPHORE_COUNT。 Task1: 任务每隔4s(3s delay延时 + 1s阻塞延时)获取和释放互斥信号量。 Task2: 打印任务2运行log。 Task3: 任务每隔1.5s(0.5s delay延时 + 1s阻塞延时)获取和释放互斥信号量。 步骤5:是为了验证实现互斥信号量优先级继承功能。 Example execution steps: 1. Compile and download the program to the MCU and run it; 2. You can use the log information printed by the serial debugging assistant to observe the task execution process. 3. Open the define SEMAPHORE_BINRAY, close SEMAPHORE_COUNT and SEMAPHORE_MUTEX. Task1: The task releases a binary semaphore every 2s. Task2: Get a binary semaphore and print a success message. If the acquisition fails, the system enters the waiting state. Task3: Delete Task 3. 4. Open the define SEMAPHORE_COUNT, close SEMAPHORE_BINRAY and SEMAPHORE_MUTEX. Task1: The task releases a counting semaphore every 2s. Add 1 to the total number of semaphores. The total number is capped at 50. Task2: Obtain the counting semaphore and print the obtaining success message. Subtract 1 from the total semaphore. Task3: Delete Task 3. 5. Open the define SEMAPHORE_MUTEX, close SEMAPHORE_BINRAY and SEMAPHORE_COUNT. Task1: The task obtains and releases mutually exclusive semaphore every 4s (3s delay + 1s blocking delay). Task2: Print Task 2 Run log. Task3: The task acquires and releases mutually exclusive semaphore every 1.5s(0.5s delay + 1s blocking delay). Step 5: Is to verify the implementation of the MUtex priority inheritance function. ================================================================================ 注意事项: STK板与USB转TTL模块的连线方式如下: STK板 USB转TTL模块 PA02(TX) --> RX PA03(RX) --> TX GND --> GND 波特率: 115200bps Notes: The STK board is wired to the USB to TTL module as follows: STK board USB to TTL module PA02(TX) --> RX PA03(RX) --> TX GND --> GND Baud rate: 115200bps ================================================================================