[uCOS/RTOS] ucosii移植的问题

[复制链接]
 楼主| 比神乐 发表于 2024-4-30 19:00 | 显示全部楼层 |阅读模式
我学习ucosii,试图把ucosii移植到51单片机上。
  1. #if OS_TASK_CREATE_EN > 0u
  2. INT8U  OSTaskCreate (void   (*task)(void *p_arg),
  3.                      void  idata  *p_arg,
  4.                      OS_STK idata *ptos,
  5.                      INT8U    prio)reentrant
  6. {
  7.     OS_STK  idata  *psp;
  8.     INT8U      err;
  9. //#if OS_CRITICAL_METHOD == 3u                 /* Allocate storage for CPU status register               */
  10. //    OS_CPU_SR  cpu_sr = 0u;
  11. //#endif



  12. #if OS_ARG_CHK_EN > 0u
  13.     if (prio > OS_LOWEST_PRIO) {             /* Make sure priority is within allowable range           */
  14.         return (OS_PRIO_INVALID);
  15.     }
  16. #endif
  17.     OS_ENTER_CRITICAL();
  18.     if (OSIntNesting > 0u) {                 /* Make sure we don't create the task from within an ISR  */
  19.         OS_EXIT_CRITICAL();
  20.         //return (OS_TASK_CREATE_ISR);
  21.                 return (OS_TASK_DEL_ERR);
  22.     }
  23.     if (OSTCBPrioTbl[prio] == (OS_TCB idata *)0) { /* Make sure task doesn't already exist at this priority  */
  24.         OSTCBPrioTbl[prio] = OS_TCB_RESERVED;/* Reserve the priority to prevent others from doing ...  */
  25.                                              /* ... the same thing until task is created.              */
  26.         OS_EXIT_CRITICAL();
  27.         psp = OSTaskStkInit(task, p_arg, ptos, 0u);             /* Initialize the task's stack         */
  28.         err = OS_TCBInit(prio, psp, (OS_STK *)0, 0u, 0u, (void *)0, 0u);
  29.         if (err == OS_ERR_NONE) {
  30.             if (OSRunning == OS_TRUE) {      /* Find highest priority task if multitasking has started */
  31.                 OS_Sched();
  32.             }
  33.         } else {
  34.             OS_ENTER_CRITICAL();
  35.             OSTCBPrioTbl[prio] = (OS_TCB *)0;/* Make this priority available to others                 */
  36.             OS_EXIT_CRITICAL();
  37.         }
  38.         return (err);
  39.     }
  40.     OS_EXIT_CRITICAL();
  41.     return (OS_ERR_PRIO_EXIST);
  42. }
  43. #endif
  1. #if OS_TASK_CREATE_EN > 0u
  2. INT8U         OSTaskCreate            (void           (*task)(void *p_arg),
  3.                                        void        idata    *p_arg,
  4.                                        OS_STK      idata    *ptos,
  5.                                        INT8U            prio)reentrant;
  6. #endif
  1. #define task1prio        2
  2. #define task2prio        4
  3. sbit P10 =P1^0;
  4. sbit P11 =P1^1;

  5. INT8U data task1stk[stksize];
  6. INT8U idata task2stk[stksize];

  7. void max(void)reentrant ;


  8. void task1(void);
  9. void task2(void);

  10. void main(void)
  11. {
  12.         Time_Init ();
  13.         OSInit();
  14.         OSTaskCreate(task1,(void* )0,task1stk,task1prio);
  15.         //OSTaskCreate(task1,(void * )0,&task1stk[stksize-1],2);
  16.         OSTaskCreate(task2,(void * )0,task2stk,task2prio);
  17.         OSStart();
  18.        

  19. }

  20. void task1(void)
  21. {


  22. while(1)
  23.        
  24. {
  25.         P10 = !P10;
  26.         max();
  27.         OSTimeDlyHMSM(0,0,1,0);

  28. }

  29. }

  30. void task2(void)
  31. {

  32. while(1)
  33.        
  34. {
  35.        
  36.         P11 = !P11;
  37.         OSTimeDlyHMSM(0,0,2,0);

  38. }

  39. }

  40. void max(void)reentrant
  41. {
  42. INT32U i;
  43.         i++;

  44. }
可是编译有两个不对劲的警告

产生警告的语句如下:
  1. OSTaskCreate(task1,(void* )0,task1stk,task1prio);
  2.         //OSTaskCreate(task1,(void * )0,&task1stk[stksize-1],2);
  3.         OSTaskCreate(task2,(void * )0,task2stk,task2prio);
请问高手,哪里出了问题?如何解决?谢谢!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

470

主题

3541

帖子

7

粉丝
快速回复 返回顶部 返回列表