mirror of
https://gitee.com/cosyos/cosyos.git
synced 2026-10-06 04:59:34 +08:00
删除文件 System
This commit is contained in:
@@ -1,30 +0,0 @@
|
||||
/**************************************************************************//**
|
||||
* @item CosyOS-III Kernel
|
||||
* @file CosyOS.H
|
||||
* @brief 系统链接头文件
|
||||
* @details 用户的各个c文件中应包含此文件。
|
||||
* @author 迟凯峰
|
||||
* @version V2.4.2
|
||||
* @date 2026.07.04
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __COSYOS_H
|
||||
#define __COSYOS_H
|
||||
|
||||
#define COSYOS3_VERSION "v2.4.2"
|
||||
|
||||
#include "os_var.h"
|
||||
#include "os_api.h"
|
||||
#include "sv_com.h"
|
||||
#include "sv_create.h"
|
||||
#include "sv_int_fifo.h"
|
||||
#include "sv_int_loc.h"
|
||||
#include "sv_pend.h"
|
||||
#include "sv_task.h"
|
||||
#include "sv_tick.h"
|
||||
#include "ur_api.h"
|
||||
#include "ur_eapi.h"
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
-313
File diff suppressed because it is too large
Load Diff
@@ -1,22 +0,0 @@
|
||||
/**************************************************************************//**
|
||||
* @item CosyOS-III Kernel
|
||||
* @file os_base.h
|
||||
* @brief 基本数据类型定义
|
||||
* @author 迟凯峰
|
||||
* @version V2.3.0
|
||||
* @date 2026.02.01
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __OS_BASE_H
|
||||
#define __OS_BASE_H
|
||||
|
||||
typedef char s_s8_t;
|
||||
typedef short s_s16_t;
|
||||
typedef long s_s32_t;
|
||||
typedef unsigned char s_u8_t;
|
||||
typedef unsigned short s_u16_t;
|
||||
typedef unsigned long s_u32_t;
|
||||
typedef s_u8_t s_ecode_t; /*!< 错误码类型 */
|
||||
|
||||
|
||||
#endif
|
||||
@@ -1,147 +0,0 @@
|
||||
/**************************************************************************//**
|
||||
* @item CosyOS-III Kernel
|
||||
* @file os_debug.c
|
||||
* @brief DEBUG接口
|
||||
* @details DEBUG接口,串口发送和接收解析。
|
||||
* @author 迟凯峰
|
||||
* @version V2.3.5
|
||||
* @date 2026.06.10
|
||||
******************************************************************************/
|
||||
|
||||
#include "os_var.h"
|
||||
#if (SYSCFG_DEBUGGING == __ENABLED__)
|
||||
#include "os_api.h"
|
||||
#include "sv_com.h"
|
||||
#include "sv_create.h"
|
||||
#include "sv_task.h"
|
||||
#include "ur_api.h"
|
||||
#include <string.h>
|
||||
|
||||
/**
|
||||
\brief 字符串转整型
|
||||
\param[in] str 字符串指针
|
||||
\return 转换后的整型数据
|
||||
\note Keil C51/C251 标准库中的 atoi() 是非线程安全的,故额外定义此函数,
|
||||
专用于DEBUG接口的串口接收解析。
|
||||
*/
|
||||
static int _atoi_(char const *str)
|
||||
{
|
||||
if(str == OS_NULL || !*str){
|
||||
return 0;
|
||||
}
|
||||
else{
|
||||
int a = 0;
|
||||
int k = 1;
|
||||
s_u8_t i = s_strlen(str);
|
||||
while(i--){
|
||||
if(str[i] >= '0' && str[i] <= '9'){
|
||||
a += (str[i] - '0') * k;
|
||||
k *= 10;
|
||||
}
|
||||
else if(str[i] == '+'){
|
||||
return a;
|
||||
}
|
||||
else if(str[i] == '-'){
|
||||
return -a;
|
||||
}
|
||||
else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return a;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
\brief 接收解析
|
||||
\details DEBUG接口,串口接收解析。
|
||||
\return 无
|
||||
*/
|
||||
void os_debug_recv(void)
|
||||
{
|
||||
#define p s_debug_recvptr
|
||||
#define len s_debug_recvlen
|
||||
p[len] = '\0';
|
||||
if(len == 9 && !s_memcmp(p, "taskmgr\r\n", 9)){
|
||||
s_taskmgr_sign = true;
|
||||
s_taskmgr_upspeed = 0;
|
||||
s_timqry_handle[OS_TMID_TASKMGR]->timer = s_timqry_handle[OS_TMID_TASKMGR]->reload;
|
||||
}
|
||||
else if(len == 6 && !s_memcmp(p, "exit\r\n", 6)){
|
||||
s_taskmgr_sign = false;
|
||||
}
|
||||
else if(len >= 15 && !s_memcmp(p, "taskmgr /s=", 11)){
|
||||
s_u8_t i;
|
||||
char *mptr = p + 11;
|
||||
for(i = 0; i < 5; i++){
|
||||
if(mptr[i] >= '0' && mptr[i] <= '9');
|
||||
else break;
|
||||
}
|
||||
if(i >= 2 && !s_memcmp(mptr + i, "\r\n", 2)){
|
||||
s_u16_t temp;
|
||||
mptr[i] = '\0';
|
||||
temp = _atoi_(mptr);
|
||||
if(temp >= 50 && temp <= 5000){
|
||||
s_timqry_handle[OS_TMID_TASKMGR]->reload = (temp * 1000UL) / SYSCFG_SYSTICK_CYCLE;
|
||||
}
|
||||
}
|
||||
}
|
||||
#undef p
|
||||
#undef len
|
||||
}
|
||||
|
||||
/**
|
||||
\brief 系统调试器
|
||||
\details 负责系统DEBUG信息的输出,具体包括命令行和任务管理器。
|
||||
\param[in] 定时器ID OS_TMID_DEBUGGER
|
||||
\param[in] 定时查询事件 s_debug_sendtype
|
||||
\param[in] 自动重装载 false
|
||||
\param[in] 任务名称 Debugger
|
||||
\param[in] 任务优先级 SYSCFG_TASKPRIORITY - 1
|
||||
\param[in] 任务栈大小 SYSCFG_STACKSIZE_DEBUGGER
|
||||
\param[in] 安全运行时 0
|
||||
\param[in] 任务名称文本<br>
|
||||
遗产模式:"Debugger"<br>
|
||||
标准/兼容模式:[中文:"系统调试器",英文:"Debugger"]
|
||||
\return 无
|
||||
\note 定时查询任务
|
||||
*/
|
||||
#if (SYSCFG_DEBUG_LANGUAGE == 0)
|
||||
#define _taskname "Debugger"
|
||||
#else
|
||||
#define _taskname "\xCF\xB5\xCD\xB3\xB5\xF7\xCA\xD4\xC6\xF7" /*!< "系统调试器" */
|
||||
#endif
|
||||
uCreateTask_TimQry
|
||||
(
|
||||
OS_TMID_DEBUGGER, s_debug_sendtype, false,
|
||||
Debugger, SYSCFG_TASKPRIORITY - 1, SYSCFG_STACKSIZE_DEBUGGER, 0, _taskname
|
||||
)
|
||||
{
|
||||
#if (SYSCFG_DEBUG_SENDLEN == __DISABLED__)
|
||||
void debug_hook(char _XDATA_MEM_ *p);
|
||||
#else
|
||||
void debug_hook(char _XDATA_MEM_ *p, s_u16_t len);
|
||||
#endif
|
||||
while(true){
|
||||
if(s_debug_sendtype & OS_DEBUG_SEND_TASKMGR){
|
||||
s_debug_sendtype &= ~OS_DEBUG_SEND_TASKMGR;
|
||||
#if (SYSCFG_DEBUG_SENDLEN == __DISABLED__)
|
||||
debug_hook(s_taskmgr_sendbuff);
|
||||
#else
|
||||
debug_hook(s_taskmgr_sendbuff, s_taskmgr_sendlen);
|
||||
#endif
|
||||
}/*
|
||||
else if(s_debug_sendtype & OS_DEBUG_SEND_CMDLINE){
|
||||
s_debug_sendtype &= ~OS_DEBUG_SEND_CMDLINE;
|
||||
#if (SYSCFG_DEBUG_SENDLEN == __DISABLED__)
|
||||
debug_hook(s_cmdline_sendbuff);
|
||||
#else
|
||||
debug_hook(s_cmdline_sendbuff, s_cmdline_sendlen);
|
||||
#endif
|
||||
}*/
|
||||
uSuspendTasking();
|
||||
}
|
||||
}
|
||||
#undef _taskname
|
||||
|
||||
#endif
|
||||
-153
@@ -1,153 +0,0 @@
|
||||
/**************************************************************************//**
|
||||
* @item CosyOS-III Kernel
|
||||
* @file os_def.h
|
||||
* @brief 初始宏定义
|
||||
* @author 迟凯峰
|
||||
* @version V2.4.0
|
||||
* @date 2026.06.22
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __OS_DEF_H
|
||||
#define __OS_DEF_H
|
||||
|
||||
/*
|
||||
* SYSAPI
|
||||
*/
|
||||
|
||||
#define sDefStr(s) sDefStr_0(s)
|
||||
#define sDefStr_0(s) #s
|
||||
|
||||
#define sCat2Str(s1, s2) sCat2Str_0(s1, s2)
|
||||
#define sCat2Str_0(s1, s2) s1##s2
|
||||
|
||||
#define sCat3Str(s1, s2, s3) sCat3Str_0(s1, s2, s3)
|
||||
#define sCat3Str_0(s1, s2, s3) s1##s2##s3
|
||||
|
||||
#define sDefBitField(v) s_u8_t v:1
|
||||
#define sDefVoidBits(n) s_u8_t :n
|
||||
|
||||
|
||||
/*
|
||||
* CONST
|
||||
*/
|
||||
|
||||
#define true 1
|
||||
#define false 0
|
||||
#define OS_NULL 0
|
||||
|
||||
|
||||
/*
|
||||
* CONFIG VALUE
|
||||
*/
|
||||
|
||||
#define __DISABLED__ 0
|
||||
#define __ENABLED__ 1
|
||||
#define __STATIC__ 0 /*!< 静态队列 ............. */
|
||||
#define __DYNAMIC__ 1 /*!< 动态队列 ............. */
|
||||
#define __QUE_FIFO__ 0 /*!< 先入先出队列 ......... */
|
||||
#define __QUE_LIFO__ 1 /*!< 后入先出队列 ......... */
|
||||
#define __MCS_51__ 0 /*!< 指令集架构:MCS51 .... */
|
||||
#define __MCS_251__ 1 /*!< 指令集架构:MCS251 ... */
|
||||
#define __ARM__ 2 /*!< 指令集架构:ARM ...... */
|
||||
#define __COOPERATIVE__ 1 /*!< 协作式调度............ */
|
||||
#define __TIMESHARING__ 2 /*!< 时间片轮转调度........ */
|
||||
#define __MSP__ 0x01
|
||||
#define __PSP__ 0x02
|
||||
#define __MSP_PSP__ (__MSP__ | __PSP__)
|
||||
|
||||
|
||||
/*
|
||||
* 任务相关
|
||||
*/
|
||||
|
||||
/* 任务状态 */
|
||||
#define OS_STATUS_READY 0x00 /*!< 就绪/运行状态 ............ */
|
||||
#define OS_STATUS_FLOATING 0x01 /*!< 浮动状态 ................. */
|
||||
#define OS_STATUS_BLOCKED 0x02 /*!< 阻塞状态 ................. */
|
||||
#define OS_STATUS_TIMEOUT 0x04 /*!< 超时状态 ................. */
|
||||
#define OS_STATUS_SUSPENDED 0x08 /*!< 挂起状态 ................. */
|
||||
#define OS_STATUS_STOPPED 0x40 /*!< 停止状态 ................. */
|
||||
#define OS_STATUS_DELETED 0x80 /*!< 已删除/未启动状态 ........ */
|
||||
|
||||
/* 阻塞类型 */
|
||||
#define OS_BLOCKED_DELAY 0x00 /*!< 延时阻塞 ................. */
|
||||
/*- 0x01/0x02/0x04:sizeof(Group) -*//*!< 事件标志组阻塞(等待).... */
|
||||
#define OS_BLOCKED_BINARY 0x10 /*!< 二值信号量阻塞(获取/等待)*/
|
||||
#define OS_BLOCKED_MUTEX 0x20 /*!< 互斥信号量阻塞(获取).... */
|
||||
#define OS_BLOCKED_SEMAPHORE 0x30 /*!< 计数信号量阻塞(获取).... */
|
||||
#define OS_BLOCKED_TASKMSG 0x40 /*!< 接收私信阻塞 ............. */
|
||||
#define OS_BLOCKED_FETION 0x50 /*!< 接收飞信阻塞 ............. */
|
||||
#define OS_BLOCKED_MAIL 0x60 /*!< 接收邮件阻塞 ............. */
|
||||
#define OS_BLOCKED_MSG 0x70 /*!< 接收消息阻塞 ............. */
|
||||
|
||||
|
||||
/*
|
||||
* DEBUG SEND TYPE
|
||||
*/
|
||||
|
||||
#define OS_DEBUG_SEND_CMDLINE 0x01 /*!< 命令行发送 ... */
|
||||
#define OS_DEBUG_SEND_TASKMGR 0x02 /*!< 任务管理器发送 */
|
||||
|
||||
|
||||
/*
|
||||
* TASKMGR LEN
|
||||
*/
|
||||
|
||||
#define OS_TASKMGR_LEN_PRI 6
|
||||
#define OS_TASKMGR_LEN_STA 6
|
||||
#define OS_TASKMGR_LEN_CPU 9
|
||||
|
||||
|
||||
/*
|
||||
* SVID(服务ID,中断FIFO服务-系统专用ID)
|
||||
*/
|
||||
|
||||
#define OS_SVID_CLEARDELAY 0x00 /*!< 清除就绪延时 ....... */
|
||||
#define OS_SVID_RESUMETASK 0x01 /*!< 恢复任务 ........... */
|
||||
#define OS_SVID_SUSPENDTASK 0x02 /*!< 挂起任务 ........... */
|
||||
#define OS_SVID_DELETETASK 0x03 /*!< 删除任务 ........... */
|
||||
#define OS_SVID_RESETTASK 0x04 /*!< 重置任务 ........... */
|
||||
#define OS_SVID_CLEARBLOCK 0x05 /*!< 清除阻塞 ........... */
|
||||
#define OS_SVID_SETBLOCK 0x06 /*!< 设置阻塞 ........... */
|
||||
#define OS_SVID_SETTASKPRI 0x07 /*!< 设置任务优先级 ..... */
|
||||
#define OS_SVID_WRITEBINARY 0x08 /*!< 写二值信号量 ....... */
|
||||
#define OS_SVID_GIVESEMAPH 0x09 /*!< 给予计数信号量 ..... */
|
||||
#define OS_SVID_SENDFETION 0x0A /*!< 发送飞信 ........... */
|
||||
#define OS_SVID_SENDMAIL 0x0B /*!< 发送邮件 ........... */
|
||||
#define OS_SVID_SENDMSG 0x0C /*!< 发送消息 ........... */
|
||||
#define OS_SVID_TIMINT 0x0D /*!< 定时中断 ........... */
|
||||
#define OS_SVID_TIMQRY 0x0E /*!< 定时查询 ........... */
|
||||
#define OS_SVID_WRITEGROUP 0x0F /*!< 写标志组 ........... */
|
||||
#define OS_SVID_WRITEGVAR 0x10 /*!< 写全局变量 ......... */
|
||||
#define OS_SVID_PENDSVC 0x11 /*!< 挂起服务调用 ....... */
|
||||
#define OS_SVID_END 0x12
|
||||
|
||||
|
||||
/*
|
||||
* ECODE(错误码)
|
||||
*/
|
||||
|
||||
#define OS_ECODE_NOERROR 0x00 /*!< 无错误 ............. */
|
||||
|
||||
#define OS_ECODE_TASKSTARTED 0x0D /*!< 任务已启动 ......... */
|
||||
#define OS_ECODE_TASKSUSPENDED 0x0E /*!< 任务已挂起 ......... */
|
||||
#define OS_ECODE_TASKSTOPPED 0x0F /*!< 任务已停止 ......... */
|
||||
#define OS_ECODE_TASKDELETED 0x10 /*!< 任务已删除 ......... */
|
||||
#define OS_ECODE_TASKNOTSTARTED 0x10 /*!< 任务未启动 ......... */
|
||||
#define OS_ECODE_TASKNOTBLOCKED 0x11 /*!< 任务未阻塞 ......... */
|
||||
#define OS_ECODE_TASKNOTSUSPENDED 0x12 /*!< 任务未挂起 ......... */
|
||||
#define OS_ECODE_TASKPRIUNCHANGED 0x13 /*!< 任务优先级未改变 ... */
|
||||
|
||||
#define OS_ECODE_OVERFLOW_MSGQUEUE 0x21 /*!< 消息队列溢出 ....... */
|
||||
#define OS_ECODE_OVERFLOW_TASKQUEUE 0x22 /*!< 任务队列溢出 ....... */
|
||||
#define OS_ECODE_OVERFLOW_TASKSTACK 0x23 /*!< 任务栈溢出 ......... */
|
||||
|
||||
#define OS_ECODE_MALLOCFAIL_MSGNODE 0x31 /*!< 消息节点内存分配失败 */
|
||||
#define OS_ECODE_MALLOCFAIL_TASKNODE 0x32 /*!< 任务节点内存分配失败 */
|
||||
#define OS_ECODE_MALLOCFAIL_TASKSTACK 0x33 /*!< 任务栈内存分配失败 . */
|
||||
|
||||
#define OS_ECODE_DONOTKNOW 0xFF /*!< 未知错误 ........... */
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,33 +0,0 @@
|
||||
/**************************************************************************//**
|
||||
* @item CosyOS-III Kernel
|
||||
* @file os_main.c
|
||||
* @brief 启动-CosyOS
|
||||
* @author 迟凯峰
|
||||
* @version V2.3.0
|
||||
* @date 2026.02.01
|
||||
******************************************************************************/
|
||||
|
||||
#include "os_var.h"
|
||||
#include "os_api.h"
|
||||
#include "sv_create.h"
|
||||
#include "sv_task.h"
|
||||
#include "ur_api.h"
|
||||
|
||||
/**
|
||||
\brief 启动-CosyOS
|
||||
\param 无
|
||||
\return 错误码
|
||||
\note 用户应自主创建main函数,并在其末尾处调用该函数来启动-CosyOS;
|
||||
在正常情况下,该函数并不会返回,而是直接调度至 Starter 运行;
|
||||
只有当 Starter 启动失败时,才会返回错误码提示用户。
|
||||
*/
|
||||
s_ecode_t uStartCosyOS(void)
|
||||
{
|
||||
sCat2Str(SYSCFG_STARTERCREATE, ExtTask(Starter));
|
||||
#if (OS_TIMINTTOTAL > 0 || OS_TIMQRYTOTAL > 0)
|
||||
void os_init_timing(void);
|
||||
os_init_timing();
|
||||
#endif
|
||||
mCosyOS_INIT();
|
||||
return uStartTask_Ready(Starter);
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,72 +0,0 @@
|
||||
/**************************************************************************//**
|
||||
* @item CosyOS-III Kernel
|
||||
* @file os_starter.c
|
||||
* @brief 任务启动器(Starter)
|
||||
* @author 迟凯峰
|
||||
* @version V2.3.2
|
||||
* @date 2026.03.08
|
||||
******************************************************************************/
|
||||
|
||||
#include "os_var.h"
|
||||
#include "os_api.h"
|
||||
#include "sv_com.h"
|
||||
#include "sv_create.h"
|
||||
#include "sv_task.h"
|
||||
#include "ur_api.h"
|
||||
|
||||
/**
|
||||
\brief 任务启动器
|
||||
\param[in] 任务名称 Starter
|
||||
\param[in] 任务优先级 SYSCFG_TASKPRIORITY - (SYSCFG_DEBUGGING ? 3 : 1)
|
||||
\param[in] 任务栈大小 SYSCFG_STACKSIZE_STARTER
|
||||
\param[in] 安全运行时 0
|
||||
\param[in] 任务名称文本<br>
|
||||
遗产模式:"Starter"<br>
|
||||
标准/兼容模式:[中文:"任务启动器",英文:"Starter"]
|
||||
\return 无
|
||||
*/
|
||||
#if (SYSCFG_DEBUG_LANGUAGE == 0)
|
||||
#define _taskname "Starter"
|
||||
#else
|
||||
#define _taskname "\xC8\xCE\xCE\xF1\xC6\xF4\xB6\xAF\xC6\xF7" /*!< "任务启动器" */
|
||||
#endif
|
||||
sCat2Str
|
||||
(
|
||||
SYSCFG_STARTERCREATE,
|
||||
CreateTask(Starter, SYSCFG_TASKPRIORITY - (SYSCFG_DEBUGGING ? 3 : 1), SYSCFG_STACKSIZE_STARTER, 0, _taskname)
|
||||
)
|
||||
{
|
||||
// uScheduleLock();
|
||||
if(true){
|
||||
uExtTask(Sysidle);
|
||||
uStartTask_Ready(Sysidle);
|
||||
}
|
||||
#if (OS_TIMINTTOTAL > 0 || OS_TIMQRYTOTAL > 0)
|
||||
if(true){
|
||||
s_u8_t i;
|
||||
#if (OS_TIMINTTOTAL > 0)
|
||||
i = OS_TIMINTTOTAL;
|
||||
while(i--){
|
||||
if(s_timint_handle[i]->hookortask){
|
||||
sStartTask_TimInt(i);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if (OS_TIMQRYTOTAL > 0)
|
||||
i = OS_TIMQRYTOTAL;
|
||||
while(i--){
|
||||
if(s_timqry_handle[i]->hookortask){
|
||||
sStartTask_TimQry(i);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
// uScheduleUnlock();
|
||||
if(true){
|
||||
void start_hook(void);
|
||||
start_hook();
|
||||
}
|
||||
uDeleteTasking();
|
||||
}
|
||||
#undef _taskname
|
||||
@@ -1,63 +0,0 @@
|
||||
/**************************************************************************//**
|
||||
* @item CosyOS-III Kernel
|
||||
* @file os_sysidle.c
|
||||
* @brief 系统空闲任务(Sysidle)
|
||||
* @author 迟凯峰
|
||||
* @version V2.3.9
|
||||
* @date 2026.06.20
|
||||
******************************************************************************/
|
||||
|
||||
#include "os_var.h"
|
||||
#include "os_api.h"
|
||||
#include "sv_create.h"
|
||||
#include "sv_task.h"
|
||||
#include "ur_api.h"
|
||||
|
||||
/**
|
||||
\brief 系统空闲任务
|
||||
\param[in] 任务名称 Sysidle
|
||||
\param[in] 任务优先级 0
|
||||
\param[in] 任务栈大小 SYSCFG_STACKSIZE_SYSIDLE
|
||||
\param[in] 安全运行时 0
|
||||
\param[in] 任务名称文本<br>
|
||||
遗产模式:"Sysidle"<br>
|
||||
标准/兼容模式:[中文:"系统空闲",英文:"Sysidle"]
|
||||
\return 无
|
||||
*/
|
||||
#if (SYSCFG_DEBUG_LANGUAGE == 0)
|
||||
#define _taskname "Sysidle"
|
||||
#else
|
||||
#define _taskname "\xCF\xB5\xCD\xB3\xBF\xD5\xCF\xD0" /*!< "系统空闲" */
|
||||
#endif
|
||||
uCreateTask(Sysidle, 0, SYSCFG_STACKSIZE_SYSIDLE, 0, _taskname)
|
||||
{
|
||||
void idle_hook(void);
|
||||
while(true){
|
||||
#if (SYSCFG_SOFTRTC == __ENABLED__)
|
||||
static s_u8_t _RTC_MEM_ year = 0xFF;
|
||||
if(year != s_rtc.year){
|
||||
year = s_rtc.year;
|
||||
s_month2day = year ? ((year & 3) ? 28 : 29) : ((s_rtc.yeah & 3) ? 28 : 29);
|
||||
}
|
||||
#endif
|
||||
#if (SYSCFG_SAFERUNTIME == __ENABLED__)
|
||||
s_timeout_sign = false;
|
||||
#endif
|
||||
#if (SYSCFG_IDLEHOOK == __ENABLED__)
|
||||
idle_hook();
|
||||
#endif
|
||||
#if (SYSCFG_DEBUGGING == __ENABLED__) && (MCUCFG_TASKSTACK_MODE & __MSP__)
|
||||
if(true){
|
||||
m_stacklen_t len = mMainStack_Check();
|
||||
if(m_stacklen_max < len){
|
||||
m_stacklen_max = len;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if (SYSCFG_LOWPOWERMODE == __ENABLED__)
|
||||
mCosyOS_IDLE();
|
||||
#endif
|
||||
OS_NOP(4);
|
||||
}
|
||||
}
|
||||
#undef _taskname
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
-133
@@ -1,133 +0,0 @@
|
||||
/**************************************************************************//**
|
||||
* @item CosyOS-III Kernel
|
||||
* @file os_var.c
|
||||
* @brief 系统全局变量定义
|
||||
* @author 迟凯峰
|
||||
* @version V2.3.8
|
||||
* @date 2026.06.15
|
||||
******************************************************************************/
|
||||
|
||||
#include "os_redef.h"
|
||||
|
||||
/* The Soft-RTC */
|
||||
#if (SYSCFG_SOFTRTC == __ENABLED__)
|
||||
s_u8_t const _CONST_MEM_ s_month0day[13] = {31, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; /*!< 每月各有几天?*/
|
||||
s_u8_t _RTC_MEM_ s_month2day = 28; /*!< 二月有几天?*/
|
||||
s_every_ts _SYS_MEM_ s_sign_every/**/sZeroInstall_Group; /*!< 每信号 */
|
||||
m_rtccount_t _SYS_MEM_ s_rtc_counter/**/sZeroInstall; /*!< RTC计数器 */
|
||||
s_rtc_ts _RTC_MEM_ s_rtc = {SYSCFG_MANUFACTUREDATE}; /*!< RTC */
|
||||
#endif
|
||||
/* The Task */
|
||||
m_bit_t volatile/*_SYS_MEM_*/ s_sign_startup = true;
|
||||
s_schesign_tu volatile _SYS_MEM_ s_sign_schedule = {{0, 1}}; /*!< 调度信号 */
|
||||
m_bit_t volatile/*_SYS_MEM_*/ s_sign_delay/**/sZeroInstall; /*!< 就绪延时信号 */
|
||||
s_u8_t _SYS_MEM_ s_schedulelock_counter/**/sZeroInstall;/*!< 调度锁嵌套计数器 */
|
||||
s_taskstart_ts _SYS_MEM_ s_task_starter/**/sZeroInstall_Group; /*!< 任务启动器 */
|
||||
s_taskctrl_tsp _SYS_MEM_ s_task_current/**/sZeroInstall; /*!< 当前任务句柄 */
|
||||
s_taskctrl_tsp s_timer_list[OS_TIMESLOTNUM]/**/sZeroInstall_Group; /*!< 定时器链表 */
|
||||
s_u8_t _SYS_MEM_ s_timer_pointer = OS_TIMESLOTNUM - 1UL;
|
||||
#if (SYSCFG_SAMEPRISCHEDULE == __TIMESHARING__ && SYSCFG_TIMESHARINGMODE == 2)
|
||||
s_sharing_t const _CONST_MEM_ s_time_sharing[SYSCFG_TASKPRIORITY] = {SYSCFG_CUSTOMTIMESHARING}; /*!< 自定义时间片 -> 时间片数组 */
|
||||
#endif
|
||||
#if (SYSCFG_KERNELLOCKNESTING == __ENABLED__)
|
||||
s_u8_t _SYS_MEM_ s_kernellock_counter/**/sZeroInstall; /*!< 内核锁嵌套计数器 */
|
||||
#endif
|
||||
/* The Safe runtime */
|
||||
#if (SYSCFG_SAFERUNTIME == __ENABLED__)
|
||||
m_bit_t /*_SYS_MEM_*/ s_timeout_sign/**/sZeroInstall; /*!< 超时信号 */
|
||||
s_taskctrl_tsp _STATIC_MEM_ s_timeout_list/**/sZeroInstall; /*!< 超时链表 */
|
||||
#endif
|
||||
/* The Timing Interrupt */
|
||||
#if (OS_TIMINTTOTAL > 0)
|
||||
s_timinthand_tsp s_timint_handle[OS_TIMINTTOTAL]; /*!< 定时中断句柄 */
|
||||
#endif
|
||||
/* The Timing Query */
|
||||
#if (OS_TIMQRYTOTAL > 0)
|
||||
s_timqryhand_tsp s_timqry_handle[OS_TIMQRYTOTAL]; /*!< 定时查询句柄 */
|
||||
#endif
|
||||
/* The Task Message */
|
||||
#if (SYSCFG_TASKMSG == __ENABLED__)
|
||||
s_u8_t volatile _SYS_MEM_ s_taskmsg_sign/**/sZeroInstall; /*!< 发送私信信号 */
|
||||
#endif
|
||||
/* The Debug Interface */
|
||||
#if (SYSCFG_DEBUGGING == __ENABLED__)
|
||||
m_bit_t /*_SYS_MEM_*/ s_debug_sendsign/**/sZeroInstall;
|
||||
s_u8_t _SYS_MEM_ s_debug_sendtype/**/sZeroInstall;
|
||||
s_u8_t _SYS_MEM_ s_debug_recvlen/**/sZeroInstall;
|
||||
char * _XDATA_MEM_ s_debug_recvptr;/*
|
||||
char _XDATA_MEM_ s_cmdline_sendbuff[OS_CMDLINESENDBUFFSIZE];
|
||||
#if (SYSCFG_DEBUG_SENDLEN == __ENABLED__)
|
||||
s_u16_t _XDATA_MEM_ s_cmdline_sendlen;
|
||||
#endif*/
|
||||
m_bit_t /*_SYS_MEM_*/ s_taskmgr_sign = SYSCFG_TASKMGR_AUTOSTART;
|
||||
char _XDATA_MEM_ s_taskmgr_sendbuff[OS_TASKMGRSENDBUFFSIZE];
|
||||
#if (SYSCFG_DEBUG_SENDLEN == __ENABLED__)
|
||||
s_u16_t _XDATA_MEM_ s_taskmgr_sendlen;
|
||||
#endif
|
||||
s_u32_t _DEBUG_MEM_ s_taskmgr_upspeed/**/sZeroInstall;
|
||||
s_alarm_ts _DEBUG_MEM_ s_alarm/**/sZeroInstall_Group;
|
||||
s_fault_ts _DEBUG_MEM_ s_fault/**/sZeroInstall_Group;
|
||||
#if (SYSCFG_SYSTICKTIME_COUNT == __ENABLED__)
|
||||
s_u32_t _DEBUG_MEM_ s_tick_count1/**/sZeroInstall;
|
||||
s_u32_t _DEBUG_MEM_ s_tick_count2/**/sZeroInstall;
|
||||
#endif
|
||||
#if (SYSCFG_TASKPC_MONITOR == __ENABLED__)
|
||||
m_pc_t _SYS_MEM_ s_pc/**/sZeroInstall;
|
||||
#endif
|
||||
#if (SYSCFG_RUNTIME_COUNT == __ENABLED__)
|
||||
s_runtime_ts _DEBUG_MEM_ s_runtime/**/sZeroInstall_Group;
|
||||
#endif
|
||||
#endif
|
||||
/* The Task */
|
||||
s_u8_t const _CONST_MEM_ s_task_pickmap[SYSCFG_TASKPICKBITMAP * 128] =
|
||||
{
|
||||
#if (SYSCFG_TASKPICKBITMAP == 1)
|
||||
/* 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F */
|
||||
/* 0 */ 0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
/* 1 */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||||
/* 2 */ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
|
||||
/* 3 */ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
|
||||
/* 4 */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||
/* 5 */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||
/* 6 */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||
/* 7 */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
|
||||
#elif (SYSCFG_TASKPICKBITMAP == 2)
|
||||
/* 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F */
|
||||
/* 0 */~0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
|
||||
/* 1 */ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
/* 2 */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||||
/* 3 */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||||
/* 4 */ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
|
||||
/* 5 */ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
|
||||
/* 6 */ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
|
||||
/* 7 */ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
|
||||
/* 8 */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||
/* 9 */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||
/* A */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||
/* B */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||
/* C */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||
/* D */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||
/* E */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||
/* F */ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
|
||||
#endif
|
||||
}; /*!< Task pick bitmap */
|
||||
s_taskctrl_tsp _QUE_MEM_ s_task_queue[SYSCFG_TASKPRIORITY]/**/sZeroInstall_Group; /*!< 任务队列 */
|
||||
m_tqcount_t _QUE_MEM_ s_task_queue_count/**/sZeroInstall;
|
||||
#if (SYSCFG_TASKPRIORITY > 64)
|
||||
s_u8_t _QUE_MEM_ s_task_table_index/**/sZeroInstall; /*!< 任务表索引 */
|
||||
s_u8_t _QUE_MEM_ s_task_bytes_index[SYSCFG_TASKPRIORITY / 64 + !!(SYSCFG_TASKPRIORITY % 64)]/**/sZeroInstall_Group;
|
||||
s_u8_t _QUE_MEM_ s_task_ready_table[SYSCFG_TASKPRIORITY / 64 + !!(SYSCFG_TASKPRIORITY % 64)][8]/**/sZeroInstall_Group;
|
||||
#elif (SYSCFG_TASKPRIORITY > 8)
|
||||
s_u8_t _QUE_MEM_ s_task_bytes_index/**/sZeroInstall; /*!< 任务字节索引 */
|
||||
s_u8_t _QUE_MEM_ s_task_ready_table[SYSCFG_TASKPRIORITY / 8 + !!(SYSCFG_TASKPRIORITY % 8)]/**/sZeroInstall_Group;
|
||||
#else
|
||||
s_u8_t _QUE_MEM_ s_task_ready_table/**/sZeroInstall; /*!< 任务就绪表 */
|
||||
#endif
|
||||
#if (SYSCFG_SAMEPRISCHEDULE)
|
||||
s_u8_t _QUE_MEM_ s_task_ready_count[SYSCFG_TASKPRIORITY]/**/sZeroInstall_Group;
|
||||
#elif (SYSCFG_MUTEX == __ENABLED__)
|
||||
s_u8_t _SYS_MEM_ s_taskpri_ceiling = SYSCFG_BASEPRI_CEILING; /*!< 天花板优先级 */
|
||||
#endif
|
||||
#if (MCUCFG_PENDSVFIFO_DEPTH > 0 && SYSCFG_PENDSVFIFO_ERRORCALLBACK == __ENABLED__)
|
||||
s_ecode_t _SYS_MEM_ s_psvfifo_ecode; /*!< 中断挂起服务_FIFO-错误调用返回.错误码 */
|
||||
#endif
|
||||
-107
@@ -1,107 +0,0 @@
|
||||
/**************************************************************************//**
|
||||
* @item CosyOS-III Kernel
|
||||
* @file os_var.h
|
||||
* @brief 系统全局变量声明
|
||||
* @author 迟凯峰
|
||||
* @version V2.3.8
|
||||
* @date 2026.06.15
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __OS_VAR_H
|
||||
#define __OS_VAR_H
|
||||
#include "os_redef.h"
|
||||
|
||||
/* The Soft-RTC */
|
||||
#if (SYSCFG_SOFTRTC == __ENABLED__)
|
||||
extern s_u8_t const _CONST_MEM_ s_month0day[13];
|
||||
extern s_u8_t _RTC_MEM_ s_month2day;
|
||||
extern s_every_ts _SYS_MEM_ s_sign_every;
|
||||
extern m_rtccount_t _SYS_MEM_ s_rtc_counter;
|
||||
extern s_rtc_ts _RTC_MEM_ s_rtc;
|
||||
#endif
|
||||
/* The Task */
|
||||
extern m_bit_t volatile/*_SYS_MEM_*/ s_sign_startup;
|
||||
extern s_schesign_tu volatile _SYS_MEM_ s_sign_schedule;
|
||||
extern m_bit_t volatile/*_SYS_MEM_*/ s_sign_delay;
|
||||
extern s_u8_t _SYS_MEM_ s_schedulelock_counter;
|
||||
extern s_taskstart_ts _SYS_MEM_ s_task_starter;
|
||||
extern s_taskctrl_tsp _SYS_MEM_ s_task_current;
|
||||
extern s_taskctrl_tsp s_timer_list[OS_TIMESLOTNUM];
|
||||
extern s_u8_t _SYS_MEM_ s_timer_pointer;
|
||||
#if (SYSCFG_SAMEPRISCHEDULE == __TIMESHARING__ && SYSCFG_TIMESHARINGMODE == 2)
|
||||
extern s_sharing_t const _CONST_MEM_ s_time_sharing[SYSCFG_TASKPRIORITY];
|
||||
#endif
|
||||
#if (SYSCFG_KERNELLOCKNESTING == __ENABLED__)
|
||||
extern s_u8_t _SYS_MEM_ s_kernellock_counter;
|
||||
#endif
|
||||
/* The Safe runtime */
|
||||
#if (SYSCFG_SAFERUNTIME == __ENABLED__)
|
||||
extern m_bit_t /*_SYS_MEM_*/ s_timeout_sign;
|
||||
extern s_taskctrl_tsp _STATIC_MEM_ s_timeout_list;
|
||||
#endif
|
||||
/* The Timing Interrupt */
|
||||
#if (OS_TIMINTTOTAL > 0)
|
||||
extern s_timinthand_tsp s_timint_handle[OS_TIMINTTOTAL];
|
||||
#endif
|
||||
/* The Timing Query */
|
||||
#if (OS_TIMQRYTOTAL > 0)
|
||||
extern s_timqryhand_tsp s_timqry_handle[OS_TIMQRYTOTAL];
|
||||
#endif
|
||||
/* The Task Message */
|
||||
#if (SYSCFG_TASKMSG == __ENABLED__)
|
||||
extern s_u8_t volatile _SYS_MEM_ s_taskmsg_sign;
|
||||
#endif
|
||||
/* The Debug Interface */
|
||||
#if (SYSCFG_DEBUGGING == __ENABLED__)
|
||||
extern m_bit_t /*_SYS_MEM_*/ s_debug_sendsign;
|
||||
extern s_u8_t _SYS_MEM_ s_debug_sendtype;
|
||||
extern s_u8_t _SYS_MEM_ s_debug_recvlen;
|
||||
extern char * _XDATA_MEM_ s_debug_recvptr;/*
|
||||
extern char _XDATA_MEM_ s_cmdline_sendbuff[OS_CMDLINESENDBUFFSIZE];
|
||||
#if (SYSCFG_DEBUG_SENDLEN == __ENABLED__)
|
||||
extern s_u16_t _XDATA_MEM_ s_cmdline_sendlen;
|
||||
#endif*/
|
||||
extern m_bit_t /*_SYS_MEM_*/ s_taskmgr_sign;
|
||||
extern char _XDATA_MEM_ s_taskmgr_sendbuff[OS_TASKMGRSENDBUFFSIZE];
|
||||
#if (SYSCFG_DEBUG_SENDLEN == __ENABLED__)
|
||||
extern s_u16_t _XDATA_MEM_ s_taskmgr_sendlen;
|
||||
#endif
|
||||
extern s_u32_t _DEBUG_MEM_ s_taskmgr_upspeed;
|
||||
extern s_alarm_ts _DEBUG_MEM_ s_alarm;
|
||||
extern s_fault_ts _DEBUG_MEM_ s_fault;
|
||||
#if (SYSCFG_SYSTICKTIME_COUNT == __ENABLED__)
|
||||
extern s_u32_t _DEBUG_MEM_ s_tick_count1;
|
||||
extern s_u32_t _DEBUG_MEM_ s_tick_count2;
|
||||
#endif
|
||||
#if (SYSCFG_TASKPC_MONITOR == __ENABLED__)
|
||||
extern m_pc_t _SYS_MEM_ s_pc;
|
||||
#endif
|
||||
#if (SYSCFG_RUNTIME_COUNT == __ENABLED__)
|
||||
extern s_runtime_ts _DEBUG_MEM_ s_runtime;
|
||||
#endif
|
||||
#endif
|
||||
/* The Task */
|
||||
extern s_u8_t const _CONST_MEM_ s_task_pickmap[SYSCFG_TASKPICKBITMAP * 128];
|
||||
extern s_taskctrl_tsp _QUE_MEM_ s_task_queue[SYSCFG_TASKPRIORITY];
|
||||
extern m_tqcount_t _QUE_MEM_ s_task_queue_count;
|
||||
#if (SYSCFG_TASKPRIORITY > 64)
|
||||
extern s_u8_t _QUE_MEM_ s_task_table_index;
|
||||
extern s_u8_t _QUE_MEM_ s_task_bytes_index[SYSCFG_TASKPRIORITY / 64 + !!(SYSCFG_TASKPRIORITY % 64)];
|
||||
extern s_u8_t _QUE_MEM_ s_task_ready_table[SYSCFG_TASKPRIORITY / 64 + !!(SYSCFG_TASKPRIORITY % 64)][8];
|
||||
#elif (SYSCFG_TASKPRIORITY > 8)
|
||||
extern s_u8_t _QUE_MEM_ s_task_bytes_index;
|
||||
extern s_u8_t _QUE_MEM_ s_task_ready_table[SYSCFG_TASKPRIORITY / 8 + !!(SYSCFG_TASKPRIORITY % 8)];
|
||||
#else
|
||||
extern s_u8_t _QUE_MEM_ s_task_ready_table;
|
||||
#endif
|
||||
#if (SYSCFG_SAMEPRISCHEDULE)
|
||||
extern s_u8_t _QUE_MEM_ s_task_ready_count[SYSCFG_TASKPRIORITY];
|
||||
#elif (SYSCFG_MUTEX == __ENABLED__)
|
||||
extern s_u8_t _SYS_MEM_ s_taskpri_ceiling;
|
||||
#endif
|
||||
#if (MCUCFG_PENDSVFIFO_DEPTH > 0 && SYSCFG_PENDSVFIFO_ERRORCALLBACK == __ENABLED__)
|
||||
extern s_ecode_t _SYS_MEM_ s_psvfifo_ecode;
|
||||
#endif
|
||||
extern void (_CODE_MEM_ * const _CONST_MEM_ sPendSV_FIFOHandler[OS_SVID_END])(void _STATIC_MEM_ *sv);
|
||||
|
||||
#endif
|
||||
-951
File diff suppressed because it is too large
Load Diff
@@ -1,54 +0,0 @@
|
||||
/**************************************************************************//**
|
||||
* @item CosyOS-III Kernel
|
||||
* @file sv_com.h
|
||||
* @brief 内核公共服务
|
||||
* @details 在服务层临界区中调用并执行。
|
||||
* @author 迟凯峰
|
||||
* @version V2.3.7
|
||||
* @date 2026.06.13
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __SV_COM_H
|
||||
#define __SV_COM_H
|
||||
|
||||
#include "os_redef.h"
|
||||
void sa_add_ready (s_taskctrl_tsp htask);
|
||||
void sa_remove_ready (s_taskctrl_tsp htask);
|
||||
void sa_insert_taskque (s_taskctrl_tsp htask);
|
||||
void sa_remove_taskque (s_taskctrl_tsp htask);
|
||||
void sa_insert_blocklist (s_taskctrl_tsp *h2task);
|
||||
void sa_remove_blocklist (s_taskctrl_tsp htask);
|
||||
void sa_insert_timerlist (s_taskctrl_tsp htask, s_delay_t tick);
|
||||
void sa_remove_timerlist (s_taskctrl_tsp htask);
|
||||
void sa_block_to_float (s_taskctrl_tsp htask);
|
||||
void sa_float_to_block (s_taskctrl_tsp htask);
|
||||
void sa_block_to_ready (s_taskctrl_tsp htask);
|
||||
void sa_resume_task (s_taskctrl_tsp htask);
|
||||
void sa_suspend_task (s_taskctrl_tsp htask);
|
||||
void sa_stop_task (s_taskctrl_tsp htask);
|
||||
void sa_free_task (s_taskctrl_tsp htask);
|
||||
void sa_delete_task (s_taskctrl_tsp htask);
|
||||
void sa_reset_task (s_taskctrl_tsp htask, s_u8_t status);
|
||||
void sa_clear_block (s_taskctrl_tsp htask);
|
||||
void sa_set_block (s_taskctrl_tsp htask, s_delay_t tick);
|
||||
void sa_set_taskpri (s_taskctrl_tsp htask, s_u8_t npri);
|
||||
|
||||
void sc_clear_delay (void);
|
||||
s_ecode_t sc_resume_task (s_taskctrl_tsp htask);
|
||||
s_ecode_t sc_suspend_task (s_taskctrl_tsp htask);
|
||||
s_ecode_t sc_delete_task (s_taskctrl_tsp htask);
|
||||
s_ecode_t sc_reset_task (s_taskctrl_tsp htask, s_u8_t status);
|
||||
s_ecode_t sc_clear_block (s_taskctrl_tsp htask);
|
||||
s_ecode_t sc_set_block (s_taskctrl_tsp htask, s_delay_t tick);
|
||||
s_ecode_t sc_set_taskpri (s_taskctrl_tsp htask, s_u8_t npri);
|
||||
void sc_write_binary (s_binary_tsp hbin, bool value);
|
||||
void sc_give_semaph (s_semaph_tsp hsem);
|
||||
void sc_send_fetion (s_tionbox_tsp htbox, m_fetion_t tion);
|
||||
void sc_send_mail (s_mailbox_tsp hmbox, void *mail);
|
||||
s_ecode_t sc_send_msg (s_msgque_tsp hque, void *msg);
|
||||
void *sc_recv_msg_staque (s_staque_tsp hque);
|
||||
void *sc_recv_msg_dynque (s_dynque_tsp hque);
|
||||
void sc_timint (s_u8_t tmid, s_timint_t tick);
|
||||
void sc_timqry (s_u8_t tmid, s_timqry_t tick);
|
||||
|
||||
#endif
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,189 +0,0 @@
|
||||
/**************************************************************************//**
|
||||
* @item CosyOS-III Kernel
|
||||
* @file sv_int_fifo.h
|
||||
* @brief 中断FIFO服务-调用宏
|
||||
* @details 仅在用户中断中调用,而后挂起到 PendSV中断 中执行。
|
||||
* @author 迟凯峰
|
||||
* @version V2.3.7
|
||||
* @date 2026.06.13
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __SV_INT_FIFO_H
|
||||
#define __SV_INT_FIFO_H
|
||||
|
||||
/**
|
||||
@addtogroup CosyOS_内核服务
|
||||
@{
|
||||
*//**
|
||||
\defgroup 中断FIFO服务
|
||||
\brief 在用户中断中调用但不在本地执行,而是把服务的相关内容写入到局部的结构体中,
|
||||
再把结构体指针入 PendSV_FIFO,再触发 PendSV,而后在 PendSV中断 中执行服务。
|
||||
@{
|
||||
*//**
|
||||
\ingroup 中断FIFO服务
|
||||
\defgroup 中断FIFO服务-调用宏
|
||||
@{
|
||||
*/
|
||||
|
||||
/** 清除就绪延时 */
|
||||
#define sIPS_ClearDelay() \
|
||||
do{ \
|
||||
static sp_svid_ts u_psv = {OS_SVID_CLEARDELAY}; \
|
||||
mPendSV_FIFOLoad(); \
|
||||
}while(false)
|
||||
|
||||
/** 恢复任务 */
|
||||
#define sIPS_ResumeTask(_htask) \
|
||||
do{ \
|
||||
static sp_task_ts u_psv = {OS_SVID_RESUMETASK, OS_NULL}; \
|
||||
u_psv.htask = _htask; \
|
||||
mPendSV_FIFOLoad(); \
|
||||
}while(false)
|
||||
|
||||
/** 挂起任务 */
|
||||
#define sIPS_SuspendTask(_htask) \
|
||||
do{ \
|
||||
static sp_task_ts u_psv = {OS_SVID_SUSPENDTASK, OS_NULL}; \
|
||||
u_psv.htask = _htask; \
|
||||
mPendSV_FIFOLoad(); \
|
||||
}while(false)
|
||||
|
||||
/** 删除任务 */
|
||||
#define sIPS_DeleteTask(_htask) \
|
||||
do{ \
|
||||
static sp_task_ts u_psv = {OS_SVID_DELETETASK, OS_NULL}; \
|
||||
u_psv.htask = _htask; \
|
||||
mPendSV_FIFOLoad(); \
|
||||
}while(false)
|
||||
|
||||
/** 重置任务 */
|
||||
#define sIPS_ResetTask(_htask, _status) \
|
||||
do{ \
|
||||
static sp_taskrst_ts u_psv = {OS_SVID_RESETTASK, OS_NULL, _status}; \
|
||||
u_psv.htask = _htask; \
|
||||
mPendSV_FIFOLoad(); \
|
||||
}while(false)
|
||||
|
||||
/** 清除阻塞(状态)*/
|
||||
#define sIPS_ClearBlock(_htask) \
|
||||
do{ \
|
||||
static sp_task_ts u_psv = {OS_SVID_CLEARBLOCK, OS_NULL}; \
|
||||
u_psv.htask = _htask; \
|
||||
mPendSV_FIFOLoad(); \
|
||||
}while(false)
|
||||
|
||||
/** 设置阻塞(时间)*/
|
||||
#define sIPS_SetBlock(_htask, _tick) \
|
||||
do{ \
|
||||
static sp_blocktime_ts u_psv = {OS_SVID_SETBLOCK, OS_NULL, _tick}; \
|
||||
u_psv.htask = _htask; \
|
||||
mPendSV_FIFOLoad(); \
|
||||
}while(false)
|
||||
|
||||
/** 设置任务优先级 */
|
||||
#define sIPS_SetTaskPri(_htask, _npri) \
|
||||
do{ \
|
||||
static sp_taskpri_ts u_psv = {OS_SVID_SETTASKPRI, OS_NULL, _npri}; \
|
||||
u_psv.htask = _htask; \
|
||||
mPendSV_FIFOLoad(); \
|
||||
}while(false)
|
||||
|
||||
/** 写二值信号量 */
|
||||
#define sIPS_WriteBin(_bin, _value) \
|
||||
do{ \
|
||||
static sp_binary_ts u_psv = {OS_SVID_WRITEBINARY, &_bin, _value}; \
|
||||
mPendSV_FIFOLoad(); \
|
||||
}while(false)
|
||||
|
||||
/** 给予计数信号量 */
|
||||
#define sIPS_GiveSem(_sem) \
|
||||
do{ \
|
||||
static sp_semaph_ts u_psv = {OS_SVID_GIVESEMAPH, &_sem}; \
|
||||
mPendSV_FIFOLoad(); \
|
||||
}while(false)
|
||||
|
||||
/** 发送飞信 */
|
||||
#define sIPS_SendFetion(_tbox, _tion) \
|
||||
do{ \
|
||||
static sp_tionbox_ts u_psv = {OS_SVID_SENDFETION, &_tbox, 0}; \
|
||||
u_psv.tion = _tion; \
|
||||
mPendSV_FIFOLoad(); \
|
||||
}while(false)
|
||||
|
||||
/** 发送邮件 */
|
||||
#define sIPS_SendMail(_mbox, _mail) \
|
||||
do{ \
|
||||
static sp_mailbox_ts u_psv = {OS_SVID_SENDMAIL, &_mbox, OS_NULL}; \
|
||||
u_psv.mail = _mail; \
|
||||
mPendSV_FIFOLoad(); \
|
||||
}while(false)
|
||||
|
||||
/** 发送消息 */
|
||||
#define sIPS_SendMsg(_que, _msg) \
|
||||
do{ \
|
||||
static sp_msgque_ts u_psv = {OS_SVID_SENDMSG, (s_msgque_tsp)&_que, OS_NULL}; \
|
||||
u_psv.msg = _msg; \
|
||||
mPendSV_FIFOLoad(); \
|
||||
}while(false)
|
||||
|
||||
/** 定时中断 */
|
||||
#define sIPS_TimInt(_tmid, _tick) \
|
||||
do{ \
|
||||
static sp_timint_ts u_psv = {OS_SVID_TIMINT, _tmid, 0}; \
|
||||
u_psv.tick = _tick; \
|
||||
mPendSV_FIFOLoad(); \
|
||||
}while(false)
|
||||
|
||||
/** 定时查询 */
|
||||
#define sIPS_TimQry(_tmid, _tick) \
|
||||
do{ \
|
||||
static sp_timqry_ts u_psv = {OS_SVID_TIMQRY, _tmid, 0}; \
|
||||
u_psv.tick = _tick; \
|
||||
mPendSV_FIFOLoad(); \
|
||||
}while(false)
|
||||
|
||||
/** 清除标志组 */
|
||||
#define sIPS_ClearFlagGroup(_group) \
|
||||
do{ \
|
||||
static sp_group_ts u_psv = {OS_SVID_WRITEGROUP, (void *)&_group, -sizeof(_group), ~0}; \
|
||||
mPendSV_FIFOLoad(); \
|
||||
}while(false)
|
||||
|
||||
/** 写多标志位 */
|
||||
#define sIPS_WriteFlagBits(_group, _sign, _nbit) \
|
||||
do{ \
|
||||
static sp_group_ts u_psv = {OS_SVID_WRITEGROUP, (void *)&_group, _sign##sizeof(_group), 0}; \
|
||||
u_##_group##_ts u_grp; \
|
||||
miWriteFlagBits(); \
|
||||
sizeof(u_grp) == 1 ? *(s_u8_t *)&u_grp = false : MCUCFG_TERNARYMASK \
|
||||
sizeof(u_grp) == 2 ? *(s_u16_t *)&u_grp = false : MCUCFG_TERNARYMASK \
|
||||
sizeof(u_grp) == 4 ? *(s_u32_t *)&u_grp = false : false; \
|
||||
siWriteFlagBits_##_nbit(
|
||||
|
||||
/** 全局变量写访问 */
|
||||
#define sIPS_WriteGVar(_gp, _lp, _size) \
|
||||
do{ \
|
||||
static sp_gvar_ts u_psv = {OS_SVID_WRITEGVAR, _gp, _lp, _size}; \
|
||||
mPendSV_FIFOLoad(); \
|
||||
}while(false)
|
||||
|
||||
/** 挂起服务调用 */
|
||||
#define sIPS_PendSVC(_fp) \
|
||||
do{ \
|
||||
static sp_pendsvc_ts u_psv = {OS_SVID_PENDSVC, _fp}; \
|
||||
mPendSV_FIFOLoad(); \
|
||||
}while(false)
|
||||
|
||||
/** 设置时间 */
|
||||
#define sIPS_SetTime(_t) \
|
||||
do{ \
|
||||
static m_rtccount_t const _c = 1000000UL / SYSCFG_SYSTICK_CYCLE / 2 + 1; \
|
||||
iWriteGAry(&s_rtc, _t, sizeof(s_rtc)); \
|
||||
iWriteGVar(s_rtc_counter, _c); \
|
||||
}while(false)
|
||||
|
||||
/** @} */
|
||||
/** @} */
|
||||
/** @} */
|
||||
|
||||
#endif
|
||||
@@ -1,146 +0,0 @@
|
||||
/**************************************************************************//**
|
||||
* @item CosyOS-III Kernel
|
||||
* @file sv_int_loc.c
|
||||
* @brief 中断本地服务
|
||||
* @details 在用户中断中调用并直接在本地执行。
|
||||
* @author 迟凯峰
|
||||
* @version V2.4.2
|
||||
* @date 2026.07.04
|
||||
******************************************************************************/
|
||||
|
||||
#include "os_var.h"
|
||||
#include "sv_com.h"
|
||||
|
||||
#if (SYSCFG_MCUCORE == 8051)
|
||||
#pragma NOAREGS /* 相对寄存器访问 for C51 */
|
||||
#endif
|
||||
|
||||
/**
|
||||
@addtogroup 中断本地服务
|
||||
@{
|
||||
*/
|
||||
|
||||
#if (SYSCFG_BINARY == __ENABLED__)
|
||||
/**
|
||||
\brief 获取二值信号量
|
||||
\param[in] hbin 二值信号量句柄
|
||||
\return 结果 [true:成功,false:失败]
|
||||
*/
|
||||
bool si_take_binary(s_binary_tsp hbin)
|
||||
{
|
||||
if(hbin->binary){
|
||||
hbin->binary = false;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if (SYSCFG_FETION == __ENABLED__)
|
||||
/**
|
||||
\brief 接收飞信
|
||||
\param[in] htbox 信箱句柄
|
||||
\return 飞信数据 [false:失败]
|
||||
*/
|
||||
m_fetion_t si_recv_fetion(s_tionbox_tsp htbox)
|
||||
{
|
||||
m_fetion_t tion = htbox->tion;
|
||||
htbox->tion = false;
|
||||
return tion;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if (SYSCFG_MAILBOX == __ENABLED__)
|
||||
/**
|
||||
\brief 接收邮件
|
||||
\param[in] hmbox 邮箱句柄
|
||||
\return 邮件指针 [NULL:失败]
|
||||
*/
|
||||
void *si_recv_mail(s_mailbox_tsp hmbox)
|
||||
{
|
||||
if(hmbox->flag){
|
||||
hmbox->flag = false;
|
||||
return hmbox->mail;
|
||||
}
|
||||
return OS_NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if (SYSCFG_MSGQUEUE == __ENABLED__) && (SYSCFG_MSGQUEUE_INTRECV == __ENABLED__)
|
||||
#if (SYSCFG_MCUCORE == 8051)
|
||||
/**
|
||||
\brief 获取队列互斥量
|
||||
\details 获取队列访问权限 for C51接收消息。
|
||||
\param[in] hque 队列句柄
|
||||
\return 结果 [true:成功,false:失败]
|
||||
*/
|
||||
bool si_take_quemut(s_msgque_tsp hque)
|
||||
{
|
||||
if(!hque->lock) return false;
|
||||
hque->lock = false;
|
||||
|
||||
if(hque->type == __DYNAMIC__){
|
||||
#if (SYSCFG_DEBUGGING == __ENABLED__)
|
||||
s_fault.error_recvmsg_int = true;
|
||||
#endif
|
||||
}
|
||||
else if(!hque->counter);
|
||||
else return true;
|
||||
|
||||
hque->lock = true;
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
\brief 归还并返回
|
||||
\details 归还队列互斥量并返回消息指针 for C51接收消息。
|
||||
\param[out] mut 队列互斥量指针
|
||||
\param[in] msg 消息指针
|
||||
\return 消息指针 [NULL:失败]
|
||||
*/
|
||||
static void *_back_ret_(bool _STATIC_MEM_ *mut, void *msg)
|
||||
{
|
||||
*mut = true;
|
||||
return msg;
|
||||
}
|
||||
|
||||
/**
|
||||
\brief C51接收消息
|
||||
\param[in] hque 队列句柄
|
||||
\return 消息指针 [NULL:失败]
|
||||
*/
|
||||
void *si_recv_msg_c51(s_msgque_tsp hque)
|
||||
{
|
||||
void *msg = sc_recv_msg_staque((s_staque_tsp)hque);
|
||||
return _back_ret_((bool *)&hque->lock, msg);
|
||||
}
|
||||
#else
|
||||
/**
|
||||
\brief 非51接收消息
|
||||
\param[in] hque 队列句柄
|
||||
\return 消息指针 [NULL:失败]
|
||||
*/
|
||||
void *si_recv_msg_n51(s_msgque_tsp hque)
|
||||
{
|
||||
void *msg = OS_NULL;
|
||||
if(!hque->lock) return OS_NULL;
|
||||
hque->lock = false;
|
||||
__mx_MMB();
|
||||
|
||||
if(hque->type == __DYNAMIC__){
|
||||
#if (SYSCFG_DEBUGGING == __ENABLED__)
|
||||
s_fault.error_recvmsg_int = true;
|
||||
#endif
|
||||
}
|
||||
else if(hque->counter){
|
||||
msg = sc_recv_msg_staque((s_staque_tsp)hque);
|
||||
}
|
||||
|
||||
__mx_MMB();
|
||||
hque->lock = true;
|
||||
return msg;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
@@ -1,60 +0,0 @@
|
||||
/**************************************************************************//**
|
||||
* @item CosyOS-III Kernel
|
||||
* @file sv_int_loc.h
|
||||
* @brief 中断本地服务
|
||||
* @details 在用户中断中调用并直接在本地执行。
|
||||
* @author 迟凯峰
|
||||
* @version V2.4.2
|
||||
* @date 2026.07.04
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __SV_INT_LOC_H
|
||||
#define __SV_INT_LOC_H
|
||||
|
||||
#include "os_redef.h"
|
||||
bool si_take_binary (s_binary_tsp hbin);
|
||||
bool si_take_quemut (s_msgque_tsp hque);
|
||||
void *si_recv_msg_c51(s_msgque_tsp hque);
|
||||
void *si_recv_msg_n51(s_msgque_tsp hque);
|
||||
void *si_recv_mail (s_mailbox_tsp hmbox);
|
||||
m_fetion_t si_recv_fetion (s_tionbox_tsp htbox);
|
||||
|
||||
/**
|
||||
@addtogroup CosyOS_内核服务
|
||||
@{
|
||||
*//**
|
||||
\defgroup 中断本地服务
|
||||
\brief 在用户中断中调用并直接在本地执行的服务。
|
||||
@{
|
||||
*/
|
||||
|
||||
#define sISV_TakeBin(bin) si_take_binary(&bin) /*!< 获取二值信号量 */
|
||||
#define sISV_RecvFetion(tbox) si_recv_fetion(&tbox) /*!< 接收飞信 */
|
||||
#define sISV_RecvMail(mbox) si_recv_mail(&mbox) /*!< 接收邮件 */
|
||||
|
||||
#if (SYSCFG_MCUCORE == 8051)
|
||||
#define sISV_RecvMsg(que) (si_take_quemut((s_msgque_tsp)&que) ? si_recv_msg_c51((s_msgque_tsp)&que) : OS_NULL) /*!< C51接收消息 */
|
||||
#else
|
||||
#define sISV_RecvMsg(que) si_recv_msg_n51((s_msgque_tsp)&que) /*!< 非51接收消息 */
|
||||
#endif
|
||||
|
||||
/** 归还二值信号量 */
|
||||
#define sISV_BackBin(bin) \
|
||||
do{ \
|
||||
__mx_MMB(); \
|
||||
bin.binary = true; \
|
||||
}while(false)
|
||||
|
||||
/** 查询标志组 */
|
||||
#define sISV_QueryFlagGroup(group) \
|
||||
( \
|
||||
sizeof(group) == 1 ? *(s_u8_t *)&group ? true : false \
|
||||
: sizeof(group) == 2 ? *(s_u16_t *)&group ? true : false \
|
||||
: sizeof(group) == 4 ? *(s_u32_t *)&group ? true : false \
|
||||
: false \
|
||||
)
|
||||
|
||||
/** @} */
|
||||
/** @} */
|
||||
|
||||
#endif
|
||||
@@ -1,39 +0,0 @@
|
||||
/**************************************************************************//**
|
||||
* @item CosyOS-III Kernel
|
||||
* @file sv_pend.h
|
||||
* @brief PSV服务
|
||||
* @details 仅在 PendSV中断 中调用并执行。
|
||||
* @author 迟凯峰
|
||||
* @version V2.3.7
|
||||
* @date 2026.06.13
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __SV_PEND_H
|
||||
#define __SV_PEND_H
|
||||
|
||||
/**
|
||||
@addtogroup CosyOS_内核服务
|
||||
@{
|
||||
*//**
|
||||
\defgroup PSV服务
|
||||
\brief 仅在 PendSV中断 中调用并执行的服务。
|
||||
包括通过挂起服务调用(iPendSVC)间接调用,在挂起服务钩子(pendsv_hook)中调用。
|
||||
如果通过挂起服务调用(iPendSVC)间接调用,就是 FIFO服务;
|
||||
如果通过挂起服务钩子(pendsv_hook) 调用,就是 FIAG服务。
|
||||
@{
|
||||
*/
|
||||
|
||||
#define sPSV_ClearDelay() sc_clear_delay() /*!< 清除就绪延时 */
|
||||
#define sPSV_ResumeTask(htask) sc_resume_task(htask) /*!< 恢复任务 */
|
||||
#define sPSV_SuspendTask(htask) sc_suspend_task(htask) /*!< 挂起任务 */
|
||||
#define sPSV_DeleteTask(htask) sc_delete_task(htask) /*!< 删除任务 */
|
||||
#define sPSV_ResetTask(htask, status) sc_reset_task(htask, status)/*!< 重置任务 */
|
||||
#define sPSV_ClearBlock(htask) sc_clear_block(htask) /*!< 清除阻塞(状态)*/
|
||||
#define sPSV_SetBlock(htask, tick) sc_set_block(htask, tick) /*!< 设置阻塞(时间)*/
|
||||
#define sPSV_SetTaskPri(htask, npri) sc_set_taskpri(htask, npri) /*!< 设置任务优先级 */
|
||||
#define sPSV_GiveBin(bin) sc_write_binary(&bin, true) /*!< 给予二值信号量 */
|
||||
|
||||
/** @} */
|
||||
/** @} */
|
||||
|
||||
#endif
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,70 +0,0 @@
|
||||
/**************************************************************************//**
|
||||
* @item CosyOS-III Kernel
|
||||
* @file sv_tick.c
|
||||
* @brief 滴答服务
|
||||
* @details 仅在 SysTick中断 中调用并执行。
|
||||
* @author 迟凯峰
|
||||
* @version V2.4.2
|
||||
* @date 2026.07.04
|
||||
******************************************************************************/
|
||||
|
||||
#include "os_var.h"
|
||||
#include "sv_com.h"
|
||||
|
||||
/**
|
||||
@addtogroup 滴答服务
|
||||
@{
|
||||
*/
|
||||
|
||||
#if (SYSCFG_SEMAPHORE == __ENABLED__)
|
||||
/**
|
||||
\brief 获取计数信号量
|
||||
\param[in] hsem 计数信号量句柄
|
||||
\return 结果
|
||||
\retval false 失败
|
||||
\retval true 成功
|
||||
*/
|
||||
bool st_take_semaph(s_semaph_tsp hsem) MCUCFG_OSIT_ATTRIBUTE
|
||||
{
|
||||
s_semaph_t counter = hsem->counter;
|
||||
if(counter){
|
||||
hsem->counter = counter - 1;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if (SYSCFG_MSGQUEUE == __ENABLED__)
|
||||
/**
|
||||
\brief 接收消息
|
||||
\param[in] hque 队列句柄
|
||||
\return 消息指针
|
||||
\retval NULL 无消息
|
||||
*/
|
||||
void *st_recv_msg(s_msgque_tsp hque) MCUCFG_OSIT_ATTRIBUTE
|
||||
{
|
||||
void *msg = OS_NULL;
|
||||
#if (SYSCFG_MSGQUEUE_INTRECV == __ENABLED__)
|
||||
hque->lock = false;
|
||||
__mx_MMB();
|
||||
#endif
|
||||
|
||||
if(hque->counter){
|
||||
if(hque->type == __DYNAMIC__){
|
||||
msg = sc_recv_msg_dynque((s_dynque_tsp)hque);
|
||||
}
|
||||
else{
|
||||
msg = sc_recv_msg_staque((s_staque_tsp)hque);
|
||||
}
|
||||
}
|
||||
|
||||
#if (SYSCFG_MSGQUEUE_INTRECV == __ENABLED__)
|
||||
__mx_MMB();
|
||||
hque->lock = true;
|
||||
#endif
|
||||
return msg;
|
||||
}
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
@@ -1,98 +0,0 @@
|
||||
/**************************************************************************//**
|
||||
* @item CosyOS-III Kernel
|
||||
* @file sv_tick.h
|
||||
* @brief 滴答服务
|
||||
* @details 仅在 SysTick中断 中调用并执行。
|
||||
* @author 迟凯峰
|
||||
* @version V2.4.2
|
||||
* @date 2026.07.04
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __SV_TICK_H
|
||||
#define __SV_TICK_H
|
||||
|
||||
#include "os_redef.h"
|
||||
bool st_take_semaph (s_semaph_tsp hsem);
|
||||
void *st_recv_msg (s_msgque_tsp hque);
|
||||
|
||||
/**
|
||||
@addtogroup CosyOS_内核服务
|
||||
@{
|
||||
*//**
|
||||
\defgroup 滴答服务
|
||||
\brief 仅在 SysTick中断 中调用并执行的服务。
|
||||
包括直接在 SysTick中断 中调用,在滴答钩子(tick_hook)、定时中断钩子(u_timint_##tmid)、
|
||||
定时查询钩子(u_timqry_##tmid)、定时查询事件(u_timqryevent_##tmid)中调用。
|
||||
@{
|
||||
*/
|
||||
|
||||
#define sTSV_ClearDelay() sc_clear_delay() /*!< 清除就绪延时 */
|
||||
#define sTSV_ResumeTask(htask) sc_resume_task(htask) /*!< 恢复任务 */
|
||||
#define sTSV_SuspendTask(htask) sc_suspend_task(htask) /*!< 挂起任务 */
|
||||
#define sTSV_DeleteTask(htask) sc_delete_task(htask) /*!< 删除任务 */
|
||||
#define sTSV_ResetTask(htask, status) sc_reset_task(htask, status) /*!< 重置任务 */
|
||||
#define sTSV_ClearBlock(htask) sc_clear_block(htask) /*!< 清除阻塞 */
|
||||
#define sTSV_SetBlock(htask, tick) sc_set_block(htask, tick) /*!< 设置阻塞 */
|
||||
#define sTSV_SetTaskPri(htask, npri) sc_set_taskpri(htask, npri) /*!< 设置任务优先级 */
|
||||
#define sTSV_GiveBin(bin) sc_write_binary(&bin, true) /*!< 给予二值信号量 */
|
||||
#define sTSV_GiveSem(sem) sc_give_semaph(&sem) /*!< 给予计数信号量 */
|
||||
#define sTSV_SendFetion(tbox, tion) sc_send_fetion(&tbox, tion) /*!< 发送飞信 */
|
||||
#define sTSV_SendMail(mbox, mail) sc_send_mail(&mbox, mail) /*!< 发送邮件 */
|
||||
#define sTSV_SendMsg(que, msg) sc_send_msg((s_msgque_tsp)&que, msg)/*!< 发送消息 */
|
||||
#define sTSV_TimInt(tmid, tick) sc_timint(tmid, tick) /*!< 定时中断 */
|
||||
#define sTSV_TimQry(tmid, tick) sc_timqry(tmid, tick) /*!< 定时查询 */
|
||||
|
||||
#define sTSV_TakeSem(sem) st_take_semaph(&sem) /*!< 获取计数信号量 */
|
||||
#define sTSV_RecvMsg(que) st_recv_msg((s_msgque_tsp)&que) /*!< 接收消息 */
|
||||
|
||||
#define sTSV_TakeBin(bin) si_take_binary(&bin) /*!< 获取二值信号量 */
|
||||
#define sTSV_RecvFetion(tbox) si_recv_fetion(&tbox) /*!< 接收飞信 */
|
||||
#define sTSV_RecvMail(mbox) si_recv_mail(&mbox) /*!< 接收邮件 */
|
||||
|
||||
#define sTSV_GetTime(t) s_memcpy(t, &s_rtc, sizeof(s_rtc)) /*!< 获取时间 */
|
||||
|
||||
/** 归还二值信号量 */
|
||||
#define sTSV_BackBin(bin) \
|
||||
do{ \
|
||||
__mx_MMB(); \
|
||||
bin.binary = true; \
|
||||
}while(false)
|
||||
|
||||
/** 发送私信 */
|
||||
#define sTSV_SendTaskmsg(task) \
|
||||
s_taskmsg_sign = 1; \
|
||||
sa_block_to_ready(task); \
|
||||
u_task_##task
|
||||
|
||||
/** 设置时间 */
|
||||
#define sTSV_SetTime(t) \
|
||||
do{ \
|
||||
s_memcpy(&s_rtc, t, sizeof(s_rtc)); \
|
||||
s_rtc_counter = 1000000UL / SYSCFG_SYSTICK_CYCLE / 2 + 1; \
|
||||
}while(false)
|
||||
|
||||
/** 查询标志组 */
|
||||
#define sTSV_QueryFlagGroup(group) \
|
||||
( \
|
||||
sizeof(group) == 1 ? *(s_u8_t *)&group ? true : false \
|
||||
: sizeof(group) == 2 ? *(s_u16_t *)&group ? true : false \
|
||||
: sizeof(group) == 4 ? *(s_u32_t *)&group ? true : false \
|
||||
: false \
|
||||
)
|
||||
|
||||
/** 清除标志组 */
|
||||
#define sTSV_ClearFlagGroup(group) \
|
||||
do{ \
|
||||
sizeof(group) == 1 ? *(s_u8_t *)&group = false : MCUCFG_TERNARYMASK \
|
||||
sizeof(group) == 2 ? *(s_u16_t *)&group = false : MCUCFG_TERNARYMASK \
|
||||
sizeof(group) == 4 ? *(s_u32_t *)&group = false : false; \
|
||||
}while(false)
|
||||
|
||||
/** 写多标志位 */
|
||||
#define sTSV_WriteFlagBits(group, value, nbit) \
|
||||
stWriteFlagBits_##nbit(group, value,
|
||||
|
||||
/** @} */
|
||||
/** @} */
|
||||
|
||||
#endif
|
||||
-2103
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user