[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();中。请老师赐教。 |