首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

keil+uC/OS,是怎么实现在任务的堆栈中操作局部变量的

2012-02-04 
keil+uC/OS,是如何实现在任务的堆栈中操作局部变量的?keil+uC/OS,是如何实现在任务的堆栈中操作局部变量的

keil+uC/OS,是如何实现在任务的堆栈中操作局部变量的?
keil+uC/OS,是如何实现在任务的堆栈中操作局部变量的?
比如在程序中建立了一个任务TASK1,任务中定义了几个局部变量a,b,c,
在任务建立的时候,分配的堆栈是arrStask[500]。
那么程序执行到TASK1的时候,是如何保证把几个局部变量分配到对应的堆栈中的呢?
一直想不明白。
应该对于其他的OS和编译器,原理也差不多吧。
还希望能给个比较通俗的解释。

[解决办法]
局部变量在栈中的分配,其实就是在栈中保留位置,并通过栈指针进行访问.
至于在使用uC/OS-II那样的环境下,你只要在任务初始化的时候配置好它的栈,局部变量自然会分配到那个任务的栈中.
[解决办法]

探讨
局部变量在栈中的分配,其实就是在栈中保留位置,并通过栈指针进行访问.
至于在使用uC/OS-II那样的环境下,你只要在任务初始化的时候配置好它的栈,局部变量自然会分配到那个任务的栈中.

[解决办法]
首先开一段空间,如一个数组,这样就会产生一段被编译器保护起来的空间,作堆栈用,然后在TASK1运行前,将SP指那该空间的首地址,这样,以后申明的变量就会产生在这段被保护且空白的堆栈里了。

以后在任务切换时,再换到其它任务对应的堆栈。
[解决办法]
探讨
首先开一段空间,如一个数组,这样就会产生一段被编译器保护起来的空间,作堆栈用,然后在TASK1运行前,将SP指那该空间的首地址,这样,以后申明的变量就会产生在这段被保护且空白的堆栈里了。

以后在任务切换时,再换到其它任务对应的堆栈。

热点排行