各位: 我的COM0、COM1由于用法不同,所以要分开使用,这样也就出现两个任务(Task_Com0、Task_Com1)分别对应COM0、COM1,用来对接收来的数据进行解析,这两个任务平时不执行,只有当有相应的串口数据时才执行,这样也就出现2个不同的信号量。 我分别在,任务Task_Com0和Task_Com1的任务初始化中建立信号量
Task_Com0的任务初始化中: OS_EVENT *Sem_Com0; //定义为全局变量 Sem_Com0=OSSemCreate(0);
Task_Com1的任务初始化中: OS_EVENT *Sem_Com1; //定义为全局变量 Sem_Com1=OSSemCreate(0);
然后在 Task_Com0的任务中等待Sem_Com0信号量 OSSemPend(Sem_Com0);
Task_Com1的任务中等待Sem_Com1信号量 OSSemPend(Sem_Com1);
在 COM0的接收中断中 发送Sem_Com0信号量
COM1的接收中断中 发送Sem_Com1信号量
//--------问题 COM0的数据 接收与解析,完全正确,没有问题。 可是COM1的数据解析任务,不能执行!!! 调试: COM1的接收中断可以进入并且执行,也可以执行到Sem_Com1信号量的发送语句 "OSSemPost(Sem_Com1);" 可是 COM1 的数据解析任务 Task_Com1 不能执行,没有等待到信号量。
不解!!请各位帮忙,感谢!!
|