永发信息网

问个ucos问题?谢谢了

答案:2  悬赏:70  手机版
解决时间 2021-03-01 21:01
  • 提问者网友:酱爆肉
  • 2021-03-01 18:11
当中断执行完后,返回到OS_TaskIdle ()函数之中,但是什么时候跳出该函数啊?
void OS_TaskIdle (void *ppdata) //当然心跳一次过后,就进行解锁操作,之后任务就是空闲状态,直到有任务开始执行
{
#if OS_CRITICAL_METHOD == 3
OS_CPU_SR cpu_sr;
#endif

ppdata = ppdata;
for (;;) { //无限循环,进入死循环!!!!!!
OS_ENTER_CRITICAL();
OSIdleCtr++;
OS_EXIT_CRITICAL();
OSTaskIdleHook();
}
}
如何能跳出循环呢?谢谢了!
最佳答案
  • 五星知识达人网友:北城痞子
  • 2021-03-01 18:48
不用跳出循环,这是一个系统空闲任务,优先级最低,虽然一直在运行,但是也不碍事
全部回答
  • 1楼网友:骨子里都是戏
  • 2021-03-01 19:11
1.这个是因为c51用了r3、r2、r1三个寄存器传递一个参数,必须保存,而r3代表存储器类型,如:是xdata表示参数存储在外部ram中,r2为高字节偏移,r1为低字节位移 2.任务堆栈用于保存任务的现场,c51中的特殊寄存器只有汇编才可以操作,这个函数没有直接使用寄存器,而是调用时调用者通过参数传递寄存器值的,其中很多寄存器由于没有用到,只是简单赋值。 3.是的,这个是固定大小的栈的用法
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯