大虾们好!<br /> 我现在用的周立功公司的esayarm2100的板子,现在我嵌入了osII系统做他们送的spi例程(附送的光盘有带或者是ARM微控制器基础与实践书的P422页有介绍)本来它是控制led数码管循环显示0-9,但是实际运行程序时,发现程序随机的会停下,停到哪一个数是不确定的,有时候运行几个循环,有时候只是一个或者不到。<br /> 是任务被中止了,还是被挂起了,还是他们的例程本身代码就有问题,别的机子也会出现这种情况吗?还是有什么特殊设置?<br /> <br /> 大虾们有出现这种情况的吗?会是什么原因,原码我也可以粘上!<br /><br /> 我现在百思不得其解!特别需要你的指点!<br /> int main (void) //主程序<br />{<br /> OSInit();<br /><br /> OSTaskCreate(TaskStart, (void *)0, &TaskStartStk[TASK_STK_SIZE - 1], 0);<br /> OSStart();<br /> return 0;<br />}<br /><br /><br />uint8 const ShowTable[11] = {<br /> 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x00};<br />// 0 1 2 3 4 5 6 7 8 9 <br /><br /><br /> void TaskStart(void *pdata) //任务程序,本任务实现循环显示<br />{<br /> uint8 temp,i;<br /><br /> pdata = pdata; /* 避免编译警告 */<br /><br /> TargetInit(); /* 目标板初始化 */<br /> PINSEL1 = (PINSEL1 & 0xf3ffffff);<br /> IO0DIR = HC595_CS;<br /> IO0DIR|=LED1CON;<br /> for (;;)<br /> { <br /> <br /> for (i = 0; i < 10; i++)<br /> {<br /> SPIStart();<br /> IO0CLR = HC595_CS;<br /> SPIRW(&temp, ~ShowTable);<br /> IO0SET = HC595_CS;<br /> SPIEnd();<br /> OSTimeDly(OS_TICKS_PER_SEC / 5);<br /> IO0CLR=LED1CON;<br /> OSTimeDly(OS_TICKS_PER_SEC / 8);<br /> IO0SET=LED1CON;<br /> OSTimeDly(OS_TICKS_PER_SEC / 8);<br /> <br /> }<br /> <br /> }<br />} |
|