我学习ucosii,试图把ucosii移植到51单片机上。
- #if OS_TASK_CREATE_EN > 0u
- INT8U OSTaskCreate (void (*task)(void *p_arg),
- void idata *p_arg,
- OS_STK idata *ptos,
- INT8U prio)reentrant
- {
- OS_STK idata *psp;
- INT8U err;
- //#if OS_CRITICAL_METHOD == 3u /* Allocate storage for CPU status register */
- // OS_CPU_SR cpu_sr = 0u;
- //#endif
- #if OS_ARG_CHK_EN > 0u
- if (prio > OS_LOWEST_PRIO) { /* Make sure priority is within allowable range */
- return (OS_PRIO_INVALID);
- }
- #endif
- OS_ENTER_CRITICAL();
- if (OSIntNesting > 0u) { /* Make sure we don't create the task from within an ISR */
- OS_EXIT_CRITICAL();
- //return (OS_TASK_CREATE_ISR);
- return (OS_TASK_DEL_ERR);
- }
- if (OSTCBPrioTbl[prio] == (OS_TCB idata *)0) { /* Make sure task doesn't already exist at this priority */
- OSTCBPrioTbl[prio] = OS_TCB_RESERVED;/* Reserve the priority to prevent others from doing ... */
- /* ... the same thing until task is created. */
- OS_EXIT_CRITICAL();
- psp = OSTaskStkInit(task, p_arg, ptos, 0u); /* Initialize the task's stack */
- err = OS_TCBInit(prio, psp, (OS_STK *)0, 0u, 0u, (void *)0, 0u);
- if (err == OS_ERR_NONE) {
- if (OSRunning == OS_TRUE) { /* Find highest priority task if multitasking has started */
- OS_Sched();
- }
- } else {
- OS_ENTER_CRITICAL();
- OSTCBPrioTbl[prio] = (OS_TCB *)0;/* Make this priority available to others */
- OS_EXIT_CRITICAL();
- }
- return (err);
- }
- OS_EXIT_CRITICAL();
- return (OS_ERR_PRIO_EXIST);
- }
- #endif
- #if OS_TASK_CREATE_EN > 0u
- INT8U OSTaskCreate (void (*task)(void *p_arg),
- void idata *p_arg,
- OS_STK idata *ptos,
- INT8U prio)reentrant;
- #endif
- #define task1prio 2
- #define task2prio 4
- sbit P10 =P1^0;
- sbit P11 =P1^1;
- INT8U data task1stk[stksize];
- INT8U idata task2stk[stksize];
- void max(void)reentrant ;
- void task1(void);
- void task2(void);
- void main(void)
- {
- Time_Init ();
- OSInit();
- OSTaskCreate(task1,(void* )0,task1stk,task1prio);
- //OSTaskCreate(task1,(void * )0,&task1stk[stksize-1],2);
- OSTaskCreate(task2,(void * )0,task2stk,task2prio);
- OSStart();
-
- }
- void task1(void)
- {
- while(1)
-
- {
- P10 = !P10;
- max();
- OSTimeDlyHMSM(0,0,1,0);
- }
- }
- void task2(void)
- {
- while(1)
-
- {
-
- P11 = !P11;
- OSTimeDlyHMSM(0,0,2,0);
- }
- }
- void max(void)reentrant
- {
- INT32U i;
- i++;
- }
可是编译有两个不对劲的警告
产生警告的语句如下:
- OSTaskCreate(task1,(void* )0,task1stk,task1prio);
- //OSTaskCreate(task1,(void * )0,&task1stk[stksize-1],2);
- OSTaskCreate(task2,(void * )0,task2stk,task2prio);
请问高手,哪里出了问题?如何解决?谢谢!
|