初级会员
- 积分
- 71
- 金钱
- 71
- 注册时间
- 2015-10-11
- 在线时间
- 6 小时
|
5金钱
请问论坛里面的前辈们还有原子哥,我在串口中断服务函数中给一个任务发送信号量,任务中请求信号量,为什么程序会跑死了呢,如果只有中断函数发送信号量或者任务请求信号量这其中一个,程序就可以正常运行。
但是两者组合到一起程序就会跑死了,晚辈试了好多种方法,实在是没招了,也想不明白为什么会出现这种
情况,还请论坛里面知道这种问题的前辈和原子哥能够不吝赐教,晚辈在这里感激不尽!
下面贴上代码,另外信号量是已经创建了的,不是没有创建信号量导致的问题。
//这个是任务函数
void GPRS_DataAnalysis_Task (void * p_arg)
{
INT8U err; //返回错误码
OS_CPU_SR cpu_sr=0;
(void *)p_arg;
for(;;)
{
OSSemPend(SemEvent_GPRSDataAnalysis,0,&err); //请求信号量
i++;
if(i > 1000)
i = 0;
OSTimeDlyHMSM(0,0,0,10);
}
}
//这个是中断服务程序
interrupt VectorNumber_Vsci1 void GPRS_SCI1_ISR(void)
{
OSIntEnter();
SCI1StateReg = SCI1SR1; //读取SCI1状态寄存器
GPRSData = SCI1DRL; //读取SCI1数据寄存器L8位
if((SCI1StateReg & 0x20) == 0x20) //接收数据有效
{
OSSemPost(SemEvent_GPRSDataAnalysis); //发送信号量
}
OSIntExit();
}
|
|