|
使用ucosII做一个任务的同步,为了找出问题所在把其他任务全部屏蔽了,只剩下一个任务
void mpu6050_task(void *pdata)
{
u8 err;
pdata = pdata ;
while(1)
{
OSSemPend(sem_mpu6050,0,&err);
mpu6050_times++;
disp_num(200,130,mpu6050_times);//液晶显示该数字
delay_ms(100);
}
}
创建任务前已经初始化信号量 sem_mpu6050
sem_mpu6050 = OSSemCreate(0);
释放该信号量的函数位于串口3中断服务子程序中
void USART3_IRQHandler(void)
{
OSIntEnter();
if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET) //接收中断有效
{
OSSemPost(sem_mpu6050);
Temp0[counter] = USART_ReceiveData(USART3); //
}
OSIntExit();
}
由于是第一次用到ucos,为了测试信号量到底有没有起作用,我将中断服务程序中的释放函数OSSemPost(sem_mpu6050)屏蔽,但是不知为什么任务仍能请求到信号继续向下执行,有没有碰到过这种现象的呢,在线等 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
该献的血还是要献的。你不献他不献。难道让我去献? --- 出自坛友:lovejp1981
|