| 
 
[mw_shl_code=c,true]
[/mw_shl_code]
[mw_shl_code=c,true]
[/mw_shl_code]
[mw_shl_code=c,true]#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"	
#include "includes.h"
#include "beep.h"
#include "lcd.h"
/////////////////////////UCOSII?///////////////////////////////////
//START ????
#define START_TASK_PRIO      			10 
#define START_STK_SIZE  				64
	
OS_STK START_TASK_STK[START_STK_SIZE];
void start_task(void *pdata);	
 			   
//#define LED1_TASK_PRIO       			7 
//#define LED1_STK_SIZE  		    		64
	
//OS_STK LED1_TASK_STK[LED1_STK_SIZE];
//void led1_task(void *pdata);
//#define LED2_TASK_PRIO       			6 
//#define LED2_STK_SIZE  					64
//OS_STK LED2_TASK_STK[LED2_STK_SIZE];
//void led2_task(void *pdata);
////BEEP ????
//#define BEEP_TASK_PRIO 8
//#define BEEP_STK_SIZE  64
//OS_STK BEEP_TASK_STK[BEEP_STK_SIZE];
//void beep_task(void *pdata);
#define LCD_TASK_PRIO 		4
#define LCD_STK_SIZE  200
OS_STK LCD_TASK_STK[LCD_STK_SIZE];
void lcd_task(void *pdata);
	
 int main(void)
 {
	delay_init();	       
	NVIC_Configuration(); 
	LCD_Init(); 
	//LED_Init();		  	 
	//BEEP_Init();
	
	 	POINT_COLOR=RED;
	 while (1)
	 {
	OSInit();   
 	OSTaskCreate(start_task,(void *)0,(OS_STK *)&START_TASK_STK[START_STK_SIZE-1],START_TASK_PRIO );//???¨????????
	//(OS_STK *)&START_TASK_STK[START_STK_SIZE-1]??????????????????
 	 OSStart();
	 }
 }
 
	  
//????????
void start_task(void *pdata)
{
  OS_CPU_SR cpu_sr=0;
	pdata = pdata; 
	OSStatInit();						
 	OS_ENTER_CRITICAL();			    
	//OSTaskCreate(led1_task,(void *)0,(OS_STK*)&LED1_TASK_STK[LED1_STK_SIZE-1],LED1_TASK_PRIO);						   
 	//OSTaskCreate(led2_task,(void *)0,(OS_STK*)&LED2_TASK_STK[LED2_STK_SIZE-1],LED2_TASK_PRIO);	
	
	//OSTaskCreate(beep_task,(void *)0, (OS_STK*)&BEEP_TASK_STK[BEEP_STK_SIZE-1],BEEP_TASK_PRIO);
	OSTaskCreate(lcd_task,(void *)0, (OS_STK*)&LCD_TASK_STK[LCD_STK_SIZE-1],LCD_TASK_PRIO);
	
	OSTaskSuspend(START_TASK_PRIO);	
	OS_EXIT_CRITICAL();				
}
//void led1_task(void *pdata)
//{	 	
//	while(1)
//	{
//		LED0=0;
//		delay_ms(80);
//		LED0=1;
//		delay_ms(80);
//	};
//}
////LED2????
//void led2_task(void *pdata)
//{	  
//	while(1)
//	{
//		LED1=0;
//		delay_ms(300);
//		LED1=1;
//		delay_ms(300);
//	};
//}
//void beep_task(void *pdata)
//{
//	u8 i ;
//	while(1)
//	{
//		for( i = 0 ; i <500 ; i++ )
//		{
//			delay_ms(1000);
//			BEEP =!BEEP ;
//		}
//	};
//}
void lcd_task(void *pdata)
{ 
	u8 i ;
	i = 0 ;
	while (1)
	{
		
		i++;
		if (i > 9 )
			i = 0 ;		
		switch (i)
		{
			case 0 : LCD_Clear(RED);break;
			case 1 : LCD_Clear(WHITE);break ;
			case 2 : LCD_Clear(YELLOW);break ;
			case 3 : LCD_Clear(BLACK);break ;
			case 4 : LCD_Clear(GREEN);break ;
			case 5 : LCD_Clear(BROWN);break ;
			case 6 : LCD_Clear(BLUE);break ;
			case 7 : LCD_Clear(LGRAY);break ;
			case 8 : LCD_Clear(LBBLUE);break ;		
		}
		delay_ms(3000);
	};
}
[/mw_shl_code]
 
老师您好,我的问题还是没有解决,这是我的源代码,为什么在我把LCD_Init();屏蔽掉之后,所有的外设都可以按照任务执行,但是一旦加上LCD_Init();之后,就不可以了。整个的硬件都是没有反应的。我一开始考虑的是延时时间过短,然后延时3000,但是还是不行。在调试的时候,程序不会卡在LCD_Init();中。请老师赐教。 |