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