我用的2131的开发板,用UCOS实现了基本的点亮LED的功能,想在此基础上加上一个task——数码管循环显示。不知道为什么加完数码管部分的程序之后就没有反映了,LED灯也不亮了。。。,请高人帮忙看看,下面是主程序,我没用操作系统时,用类似的程序实现了LED灯的循环点亮。<br /><br /><br />#include "config.h"<br />#include "stdlib.h"<br /><br />#define LED1 (1<<18) <br />#define LED2 (1<<19)<br />#define LED3 (1<<20)<br />#define HC595_CS (1<<29)<br /><br />#define Task0StkLengh 64 //Define the Task0 stack length 定义用户任务0的堆栈长度<br />#define TaskLED1StkSize 128<br />#define TaskLED2StkSize 128<br />#define TaskLED3StkSize 128<br />#define TaskNUMStkSize 128<br /><br />OS_STK Task0Stk [Task0StkLengh]; //Define the Task0 stack 定义用户任务0的堆栈<br />OS_STK TaskLED1Stk[TaskLED1StkSize];<br />OS_STK TaskLED2Stk[TaskLED2StkSize];<br />OS_STK TaskLED3Stk[TaskLED3StkSize];<br />OS_STK TaskNUMStk[TaskNUMStkSize];<br />void Task0(void *pdata); //Task0 任务0<br />void TaskLED1(void *data);<br />void TaskLED2(void *data);<br />void TaskLED3(void *data);<br />void TaskNUM(void *data);<br />//void MSPI_Init( );<br />uint8 MSPI_SendData(uint8 data);<br /><br />uint8 rcv_data;<br /><br />uint8 const DISP_TAB[19]={<br /> 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,<br /> 0x88,0x83,0xC6,0xA1,0x86,0x8E,<br /> 0xC7,0x8C,0xC6};<br /> <br />uint8 const LPC2131[7] ={0xC7,0x8C,0xC6,0xA4,0xF9,0xB0,0xF9};<br /> int main (void)<br />{<br /> OSInit (); <br />// MSPI_Init(); <br /> OSTaskCreate (Task0,(void *)0, &Task0Stk[Task0StkLengh - 1], 2); <br /> OSStart ();<br /> return 0; <br />}<br />/*********************************************************************************************************<br />** Task0 任务0<br />********************************************************************************************************/<br /><br /> void Task0 (void *pdata)<br />{<br /> pdata = pdata;<br /> TargetInit ();<br /> OSTaskCreate (TaskLED1,(void *)0, &TaskLED1Stk[TaskLED1StkSize - 1], 3);<br /> OSTaskCreate (TaskLED2,(void *)0, &TaskLED2Stk[TaskLED2StkSize - 1], 4); <br /> OSTaskCreate (TaskLED3,(void *)0, &TaskLED3Stk[TaskLED3StkSize - 1], 5);<br /> OSTaskCreate (TaskNUM,(void *)0, &TaskNUMStk[TaskNUMStkSize - 1], 6);<br /> <br /> while (1)<br /> {<br /> OSTimeDly(10);<br /> }<br />}<br /> <br />/*********************************************************************************************************<br />** TaskLED1 任务LED1<br />********************************************************************************************************/<br />void TaskLED1(void *pdata) <br />{<br /> pdata=pdata;<br /> PINSEL2=PINSEL2&(~0x08);<br /> IO1DIR|=LED1;<br /> IO1SET=LED1;<br /> <br /> for(;;)<br /> {<br /> IO1CLR=LED1;<br /> OSTimeDly(OS_TICKS_PER_SEC/4);<br /> IO1SET=LED1;<br /> OSTimeDly(OS_TICKS_PER_SEC/2);<br /> <br /> }<br />}<br /><br />/*********************************************************************************************************<br />** TaskLED2 任务LED2<br />********************************************************************************************************/<br />void TaskLED2(void *pdata) <br />{<br /> pdata=pdata;<br /> PINSEL2=PINSEL2&(~0x08);<br /> IO1DIR|=LED2;<br /> IO1SET=LED2;<br /> <br /> for(;;)<br /> {<br /> IO1CLR=LED2;<br /> OSTimeDly(OS_TICKS_PER_SEC/2);<br /> IO1SET=LED2;<br /> OSTimeDly(OS_TICKS_PER_SEC/1);<br /> <br /> }<br />}<br />/*********************************************************************************************************<br />** TaskLED3 任务LED3<br />********************************************************************************************************/<br />void TaskLED3(void *pdata) <br />{<br /> pdata=pdata;<br /> PINSEL2=PINSEL2&(~0x08);<br /> IO1DIR|=LED3;<br /> IO1SET=LED3;<br /> <br /> for(;;)<br /> {<br /> IO1CLR=LED3;<br /> OSTimeDly(OS_TICKS_PER_SEC/1);<br /> IO1SET=LED3;<br /> OSTimeDly(OS_TICKS_PER_SEC*2);<br /> <br /> }<br />}<br />/*********************************************************************************************************<br />** TaskNUM 任务TaskNUM<br />********************************************************************************************************/<br />void TaskNUM(void *pdata) <br />{ uint8 i;<br /> pdata=pdata;<br /> PINSEL0=0x00005500;<br /> PINSEL1=0x00000000;<br /> IO0DIR=HC595_CS;<br /><br /> for(;;)<br /> { for(i=0;i<16;i++)<br /> {<br /> rcv_data=MSPI_SendData(DISP_TAB);<br /> OSTimeDly(20);<br /> }<br /> }<br />}<br /><br /><br />/*********************************************************************************************************<br />** SPI SendData 任务SPI SendData<br />********************************************************************************************************/<br /><br />uint8 MSPI_SendData(uint8 data)<br />{ <br /> PINSEL0=(PINSEL0&0xFFFF00FF)|0x00005500;<br /> SPI_SPCCR=0x52;<br /> SPI_SPCR=(0<<3)|<br /> (1<<4)|<br /> (1<<5)|<br /> (0<<6)|<br /> (0<<7);<br /> IO0CLR=HC595_CS;<br /><br /> SPI_SPDR=data;<br /> while(0==(SPI_SPSR&0x80));<br /> IO0SET=HC595_CS;<br /> return(SPI_SPDR);<br />}<br />/*********************************************************************************************************<br />** End Of File<br />********************************************************************************************************/<br /> |
|