任务1按键发出信号量,任务2请求。串口打印信号量值,没有值显示,按下按键,LED0也不亮,说明发送信号量语句没有执行。不知道信号量哪里出问题了,求指教
OS_EVENT *Sem_Event; //定义一个信号量
int main(void)
{
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
uart_init(115200);
LED_Init();
OSInit();
Sem_Event=OSSemCreate(0); //创建信号量
OSTaskCreate(start_task,(void*)0,(OS_STK*)&START_TASK_STK[START_STK_SIZE-1],START_TASK_PRIO);
OSStart();
KEY_Init();
}
void led0_task(void *pdata)
{
u8 key;
while(1)
{
LED0=0;
key=KEY_Scan(1);
if(key==KEY1_PRES)//按下按键,发送信号量
{
OSSemPost(Sem_Event);
LED0=1;
delay_ms(500);
printf("%d",Sem_Event);
}
OSTimeDly(20);
}
}
void led1_task(void *pdata)
{
INT8U err;
while(1)
{
OSSemPend(Sem_Event,0,&err);//请求信号量
printf("%d",Sem_Event);
LED1=0;
delay_ms(500);
LED1=1;
OSTimeDly(20);
}
}
|