这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » small,RTOS51 用过small RTOS51的大侠进来看看

共2条 1/1 1 跳转至

small,RTOS51 用过small RTOS51的大侠进来看看

院士
2006-09-17 18:14:16     打赏
small,RTOS51 用过small RTOS51的大侠进来看看



关键词: small     RTOS51     用过     大侠     进来     看看    

院士
2006-12-22 22:43:00     打赏
2楼
问 由于small RTOS51不允许动态删除任务和建立任务,所有没有办法使任务复位,就是让任务重头开始运行.我根据small RTOS的初始化代码做了一个让任务复位的程序,但是不成功。麻烦大侠们帮忙看看,谢谢!

/***********************************************************
**    函数名称:OSTaskReset
**    功能描述:复位一个任务,让其重新开始执行
**    输入:     需要复位的任务ID
**       输出:    无
*************************************************************/
void OSTaskReset(uint8 TaskID)
{
uint8 idata *cp;
uint8 data i;
if(TaskID>OS_MAX_TASKS)
  return;
cp = (uint8 idata *)(IDATA_RAM_SIZE - 1) ;
i = (OS_MAX_TASKS+1);
while(i > TaskID)
{
   cp--;
  cp--;
  cp--;
  i--;
}
*cp-- = 0;
*cp-- =  ((uint16)(TaskFuction[TaskID])) / 256;
OSTsakStackBotton[TaskID] = cp;
*cp-- =  ((uint16)(TaskFuction[TaskID])) % 256;
}
1: 乱搞 2: 恳请rtfsc指出那里不行小弟学艺不精,恳请rtfsc指出那里不行 3: 把程序修改了,欢迎拍砖!/***********************************************************
**    函数名称:OSTaskReset
**    功能描述:复位一个任务,让其重新开始执行
**    输入:     需要复位的任务ID
**       输出:    无
*************************************************************/

void OSTaskReset(uint8 TaskID)
{
    uint8 idata *cp;
    if(TaskID>OS_MAX_TASKS)
        return;
    cp=(uint8 idata *)OSTsakStackBotton[TaskID];  //获取任务TaskID的堆栈指针
    if(OSFastSwap & OSMapTbl[TaskID])    
    {//上一次是通过OSSched()切换出去的
        cp = cp - (uint8 idata *)6;
                 *cp-- = ((uint16)(TaskFuction[TaskID])) / 256;
        *cp = ((uint16)(TaskFuction[TaskID])) % 256;
    }
    else                    
    {  //上一次是通过中断切换出去的
           cp = cp - (uint8 idata *)19;
        *cp-- = ((uint16)(TaskFuction[TaskID])) / 256;
        *cp = ((uint16)(TaskFuction[TaskID])) % 256;
    }
}

还得说明一点,程序还是有问题,请大侠们多多指教! 4: 不要用了.难为51了. 5: 还是乱搞.不用改了,你离能改这个还差太远. 6: 改这个干吗啊要学就学实战的,os很多,熟悉主流,实用,稳定的比较好,能拿来就用就拿来就用,改东改西,会花很多不值得的时间, 7: 呵呵,成功了其实只要清楚small RTOS51的堆栈就可以了,现在运行起来没有什么后遗症! 8: 真佩服楼主.

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]