这个实验室led0输出显示Mytask,led1输出显示Youtask,共用资源s,当然这会产生干扰,但我不懂干扰的具体产生,为什么Mytask出现的次数比Youtask多,
复位之后又是空白,在任哲的 书上,第三列应该显示Mytask,为什么我的显示Youtask
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "lcd.h"
#include "includes.h"
#define START_TASK_PRIO 10
#define START_STK_SIZE 64
OS_STK START_TASK_STK[START_STK_SIZE];
void start_task(void *pdata);
#define LED0_TASK_PRIO 6
#define LED0_STK_SIZE 64
OS_STK LED0_TASK_STK[LED0_STK_SIZE];
void led0_task(void *pdata);
u8 t=5,i=50,j=50;
#define LED1_TASK_PRIO 7
#define LED1_STK_SIZE 64
OS_STK LED1_TASK_STK[LED1_STK_SIZE];
void led1_task(void *pdata);
char *s;
int main(void)
{
delay_init();
NVIC_Configuration();
LED_Init();
LCD_Init();
OSInit();
OSTaskCreate(start_task,(void *)0,(OS_STK *)&START_TASK_STK[START_STK_SIZE-1],START_TASK_PRIO );
OSStart();
}
void start_task(void *pdata)
{
OS_CPU_SR cpu_sr=0;
pdata = pdata;
OS_ENTER_CRITICAL();
OSTaskCreate(led0_task,(void *)0,(OS_STK*)&LED0_TASK_STK[LED0_STK_SIZE-1],LED0_TASK_PRIO);
OSTaskCreate(led1_task,(void *)0,(OS_STK*)&LED1_TASK_STK[LED1_STK_SIZE-1],LED1_TASK_PRIO);
OSTaskSuspend(START_TASK_PRIO);
OS_EXIT_CRITICAL();
}
void led0_task(void *pdata)
{
while(1)
{
s="Mytask";
printf("%s\n",s);
LCD_ShowString(10,i,200,16,16,"Mytask");
i+=20;
delay_ms(200);
}
}
void led1_task(void *pdata)
{
while(1)
{
s="Youtask";
printf("%s\n",s);
LCD_ShowString(90,j,200,16,16,"Youtask");
j+=20;
OSTimeSet(0);
while(OSTime<500)
{
LCD_ShowString(170,j,200,16,16,"Youtask");
}
LED1=1;
delay_ms(10);
};
}
|