疑问1:蜂鸣器任务
void beep_task(void *pdata)
{
u8 err;
while(1)
{
OSSemPend(sem_beep,0,&err); //请求信号量函数
BEEP=1;
delay_ms(60);
BEEP=0;
delay_ms(940);
}
}
这个任务为啥在程序运行中蜂鸣器不响,只有按下KEY1才响呢?
疑问2:
LCD_ShowxNum(192,50,sem_beep->OSEventCnt,3,16,0X80);//显示信号量的值
为什么我没看到SEM的值有任何变化。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
原子哥,请问下蜂鸣器这个任务比led和触摸屏的优先级高,程序执行到OSSemPend这个函数上就停到这里等待信号量的发送,相当于死到这里了,为什么我在实验的时候led和触摸屏是可以运行的。
还有一个 原子哥,信号量的改变是不是只要调用OSSemPost这个函数就会把相应信号量的值改变,接受信号量的函数就会知道信号量发生改变从而动作,这个改变的值具体是“0”到“1”这种改变还是其他的改变方式
你可以看一下有关于操作系统的书,ucos系统任务等待期间程序是不会死的,只是阻塞等待,然后执行其他任务,任务一共有5种状态
一周热门 更多>