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