update 例程文件-服务应用.

Signed-off-by: 零中断延迟的RTOS <cosyos@139.com>
This commit is contained in:
零中断延迟的RTOS
2025-10-25 11:53:12 +00:00
committed by Gitee
parent 80cbd31f25
commit 82dd772893

View File

@@ -0,0 +1,80 @@
/**************************************************************************//**
* @item CosyOS-III 例程(服务应用)
* @file reent_semaph.c
* @brief 重入访问_计数信号量
* @details 通过计数信号量的{获取<-归还},实现在任务中对任务级可重入资源的重入访问。
* @note 可实现超时处理机制。
* @author 迟凯峰
* @version V1.0.0
* @date 2025.10.25
******************************************************************************/
#if 1 /* 编译开关 */
#include "CosyOS.H"
uCreateSem(sem_0, 2, 2); // 创建计数信号量,用于重入访问,初始值=最大值=资源数量
/* task_1 */
uCreateTask(task_1, 1, 384, 0, 0)
{
while(1){
if(uTakeSem(sem_0, xTick_ms(500))){ // 如果超时时间为~0不再支持超时处理
/* 重入访问 任务级可重入资源 开始 */
/* 重入访问 任务级可重入资源 结束 */
uBackSem(sem_0);
}
else{
/* 超时处理 开始 */
/* 超时处理 结束 */
}
}
}
/* task_2 */
uCreateTask(task_2, 2, 384, 0, 0)
{
while(1){
if(uTakeSem(sem_0, xTick_ms(500))){ // 如果超时时间为~0不再支持超时处理
/* 重入访问 任务级可重入资源 开始 */
/* 重入访问 任务级可重入资源 结束 */
uBackSem(sem_0);
}
else{
/* 超时处理 开始 */
/* 超时处理 结束 */
}
}
}
/* task_3 */
uCreateTask(task_3, 3, 384, 0, 0)
{
while(1){
if(uTakeSem(sem_0, xTick_ms(500))){ // 如果超时时间为~0不再支持超时处理
/* 重入访问 任务级可重入资源 开始 */
/* 重入访问 任务级可重入资源 结束 */
uBackSem(sem_0);
}
else{
/* 超时处理 开始 */
/* 超时处理 结束 */
}
}
}
/* 启动钩子 */
void start_hook(void)
{
uStartTask_Ready(task_1); // 启动task_1初始状态为就绪状态
uStartTask_Ready(task_2); // 启动task_2初始状态为就绪状态
uStartTask_Ready(task_3); // 启动task_3初始状态为就绪状态
}
#endif