sdwys 发表于 2024-11-7 17:12:20

能否介绍一下
/* PendSV struct */注释之下的各结构体用途。

CosyOS 发表于 2024-11-8 10:01:07

sdwys 发表于 2024-11-7 17:12
能否介绍一下
/* PendSV struct */注释之下的各结构体用途。
中断挂起服务_FIFO
在中断中调用的服务,不在本地执行,而是把服务的内容写入局部的结构体中,
再把结构体指针入 PendSV_FIFO,再触发 PendSV,而后在 PendSV 中执行。

此处的 PendSV struct 以后将调整为 中断挂起服务_FIFO 结构体类型定义。
当用户在中断中调用 中断挂起服务_FIFO 时,根据不同的服务功能,将采用
这些 结构体类型 来定义 局部的结构体变量,来装载 服务的内容。

如第一个结构体类型定义:
typedef struct
{
      const s_u8_t svid; /*!< 服务ID */
      s_tasknode_tsp node; /*!< 任务句柄 */
}sp_task_ts;
typedef sp_task_ts _STATIC_MEM_ *sp_task_tsp;

当在中断中调用以下4项 中断挂起服务_FIFO 时,
会在局部定义此类型的结构体变量,来装载 服务的内容。
iResumeTask(task)、
iSuspendTask(task)、
iDeleteTask(task)、
iClearBlock(task)。

下面以 恢复任务 为例:
#define iResumeTask(task)      sPSV_ResumeTask(u_taskhandle_##task)

/** 恢复任务 */
#define sPSV_ResumeTask(load) \
do{ \
      static sp_task_ts u_psv = {OS_SVID_RESUMETASK, OS_NULL}; /*!< 装载服务内容,其中服务ID为常量:OS_SVID_RESUMETASK */ \
      u_psv.node = load; /*!< 装载服务内容,任务句柄为变量,需动态装载 */ \
      mPendSV_FIFOLoad; /*!< 服务的结构体指针 &u_psv 入 PendSV_FIFO,再触发 PendSV */ \
}while(false)

s_u8_t sPendSV_Handler(void) MCUCFG_C51USING
{
      /* 中断挂起服务_FIFO 执行服务 */
      #if MCUCFG_PENDSVFIFO_DEPTH > 0
      mPendSV_FIFOHandle;
      #endif

mPendSV_FIFOHandle,按 先入先出,依此取出 服务的结构体指针,
再获取 SVID,而后调用 函数指针 执行服务。

中断挂起服务_FIFO 相关的技术细节还有很多,先介绍个大概吧。


cylnpy 发表于 2024-11-8 16:19:17

本帖最后由 cylnpy 于 2024-11-8 17:17 编辑

CosyOS 发表于 2023-9-20 17:25
通知



CosyOS最新版下载是在首页吗,首页 CosyOS-II-STC32G-TEST-V3.0.1-20240707-1工程模板编译报中断号0~31错误是哪里设置不对吗。

胡嘉鑫 发表于 2024-11-8 17:11:11

51跑os太猛了

DIY365 发表于 2024-11-8 18:29:28

胡嘉鑫 发表于 2024-11-8 17:11
51跑os太猛了

嘎嘎一嘎子

CosyOS 发表于 2024-11-8 21:32:37

本帖最后由 CosyOS 于 2024-11-8 22:53 编辑

cylnpy 发表于 2024-11-8 16:19
CosyOS最新版下载是在首页吗,首页 CosyOS-II-STC32G-TEST-V3.0.1-20240707-1工程模板编译报中断号0~31错 ...下载就在首页顶楼!
看这里:
https://www.stcaimcu.com/forum.p ... 4100&extra=page%3D5

hande5 发表于 2024-11-9 08:31:15

学习了

胡嘉鑫 发表于 2024-11-10 14:16:56

学习

胡嘉鑫 发表于 2024-11-10 14:16:58

学习

耀子 发表于 2024-11-13 15:36:05

这个得认真学习一下
页: 87 88 89 90 91 92 93 94 95 96 [97] 98 99 100 101 102 103 104 105 106
查看完整版本: 全局不关总中断的 RTOS,CosyOS-III-V1.2.0, 送 擎天柱-AI8051U转89C52核心板