我用ucos创建了两个任务,创建了一个信号量协调他们之间的关系,我的想法是任务can_send_thread()一直阻塞等待信号量,申请到信号量是在执行下面的程序,当调用函数canSend()时释放信号量。我现的问题是调用了canSend释放信号量,但是任务can_send_thread还是无法获得信号量,我已经把 can_send_thread的优先级调到最高。那位高手帮我分析一下
void start_task(void *pdata)
{
OS_CPU_SR cpu_sr=0;
pdata = pdata;
tran_sem = OSSemCreate(0);
OSSta
tinit();
OS_ENTER_CRITICAL();
OSTaskCreate(can_send_thread,(void *)0,(OS_STK*)&SEND_TASK_STK[SEND_STK_SIZE-1],SEND_TASK_PRIO);
OSTaskCreate(can_send,(void *)0,(OS_STK*)&CAN_SEND_TASK_STK[CAN_SEND_STK_SIZE-1],CAN_SEND_TASK_PRIO);
OSTaskSuspend(START_TASK_PRIO);
OS_EXIT_CRITICAL();
}
void can_send(void)
{
while(1)
{
canSend(CAN1,M);
delay_ms(100);
}
}
void can_recv_thread(void* parameter)
{
while(1)
{
OSSemPend(recv_sem,0,&err);
。。。。。。。。。。。。。
。。。。。。。。。。。。。
。。。。。。。。。。。。
。。。。。。。。。。。。。
}
}
unsigned char canSend(CAN_PORT notused, Message *m)
{
。。。。。。。。。
。。。。。。。。。
。。。。。。。。。
。。。。。。。。。
OSSemPost(tran_sem);
}