|
板子是万利199的板子
/*检测按键1*/
static void App_TaskKbd (void *p_arg)
{
INT8U b1,b2;
INT8U err;
(void)p_arg;
while (DEF_TRUE) {
OSSemPend(InfoSem,0,&err);
b1 = BSP_PB_GetStatus(BSP_PB_ID_KEY1);
if (b1 == 1) {
App_DispScr_SignOn();/*按键1按下刷新串口*/
}
OSTimeDlyHMSM(0, 0, 0, 10);
}
}
/*检测按键2*/
static void App_TaskJoystick (void *p_arg)
{
INT8U b1,b2;
INT8U err;
(void)p_arg;
while (DEF_TRUE) {
//OSSemPend(InfoSem,0,&err);/*问题出在这(为什么不用申请信号量??申请后KEY2无法刷新??)*/
b2 = BSP_PB_GetStatus(BSP_PB_ID_KEY2);
if (b2 == 2) {
App_DispScr_SignOn();/*按键2按下刷新串口*/
}
OSSemPost(InfoSem);/*为什么在KEY1中申请的信号量不在key1中释放而在KEY2中释放呢*/
OSTimeDlyHMSM(0, 0, 0, 10);
}
}
现在的问题是,在App_TaskJoystick 函数中申请信号量OSSemPend(InfoSem,0,&err)后,按下KEY 2串口不刷新,按KEY 1没事。而在App_TaskJoystick 去掉OSSemPend(InfoSem,0,&err)后按下KEY 2可以正常刷新
想问下错在哪个地方,按下按键操作不是都要先申请信号量吗???还有就是为什么可以在KEY 1中申请信号量然后在KEY 2中释放,而不是在KEY 1中直接释放呢??
请各位大虾不吝指教,小弟刚接触UCOS,邵贝贝的那本书看过后也没找到答案 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|