大虾们好! 我现在用的周立功公司的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); } } } |