我根据杨屹大虾的《UCOS-ii在51上的移植心得》将uc/os移植到我自己的51硬件板,51单片机使用的是SST89E516RD2,带64K FLASH,板上外扩了32K的RAM,但运行如下程序时,在软件上防真正常,但下载到板子上,程序运行结果就不对,而且每次人工复位,运行的结果还不一样,求完过的高手,帮帮忙
(程序建立了2个任务,1S轮流切换一次,分别是将P1口全部送0,和全部送1,硬件上P1对应8个LED,即实现LED闪烁。(实际下载后, 要么全部亮,要么全部不亮,多复位几次,可能会出现闪烁,但闪几下就不闪了) #include <includes.h> #include"function.c" void TaskStartyya(void *yydata) reentrant;
void TaskStartyyb(void *yydata) reentrant; OS_STK TaskStartStkyya[MaxStkSize];//注意:我在ASM文件中设置?STACK空间为40H即64。
OS_STK TaskStartStkyyb[MaxStkSize]; void main(void) { OSInit(); OSTaskCreate(TaskStartyya, (void *)0, &TaskStartStkyya[0],2); OSTaskCreate(TaskStartyyb, (void *)0, &TaskStartStkyyb[0],3); OSStart(); }
void TaskStartyya(void *yydata) reentrant { yydata=yydata; AUXR|=0x02;//禁止内部RAM InitTimer0(); for(;;){ P1=0; OSTaskSuspend(3); OSTimeDly(50); OSTaskResume(3); OSTimeDly(50); } } void TaskStartyyb(void *yydata) reentrant {
yydata=yydata; for(;;){ P1=0xff; OSTimeDly(50); } }
|