如何在C中初始化任务控制块堆栈?

如何在C中初始化任务控制块堆栈?,c,pointers,scheduled-tasks,rtos,freertos,C,Pointers,Scheduled Tasks,Rtos,Freertos,我想将给定任务的初始程序计数器放入任务自己的堆栈中。这样我就可以恢复堆栈上下文以开始运行任务 有没有人有很好的资源或者知道如何在C中实现这一点 到目前为止,我已经为给定的任务创建了一个堆栈 下面是我在assembly中找到的一个示例: ;program counter initialization for task2 ldi r16, LOW(TASK2) sts TASK2_STACK_BEGIN, r16 ldi r16, HIGH(TASK2) sts TA

我想将给定任务的初始程序计数器放入任务自己的堆栈中。这样我就可以恢复堆栈上下文以开始运行任务

有没有人有很好的资源或者知道如何在C中实现这一点

到目前为止,我已经为给定的任务创建了一个堆栈

下面是我在assembly中找到的一个示例:

;program counter initialization for task2
    ldi r16, LOW(TASK2)
    sts TASK2_STACK_BEGIN, r16
    ldi r16, HIGH(TASK2)
    sts TASK2_STACK_BEGIN-1, r16

低字节首先被推送到TASK2的堆栈上,然后是高字节

了解您为什么想要这样做,以及您对该功能的目标是什么,这将是一件好事。了解此功能的约束条件也是很好的。第一个切入点是有一个函数,它被称为任务所做的第一件事。调用函数时,返回地址在堆栈上,因此您只需通过查看堆栈上的内容来获取该地址。不过,这听起来像是某种操作系统进程管理功能。您正在使用的RTO会解决这一问题。你不必知道这些细节。