高中生
最后登录1970-1-1
在线时间 小时
注册时间2015-11-17
|
实验条件:野火ISO-MINI开发板
实验工程:两个按键控制RGB三色灯
void Task_KEY_1(void *p_arg)
{
(void)p_arg;
while (1)
{
/******************KEY1检测*******************/
if((key1_H2L == 0)&&(key1_L2H == 0))//
{
if(Key1 == Key_High)
{
OSTimeDlyHMSM(0, 0,0,100);
if (Key1 == Key_High)
{
key1_H2L = 1;
key1_L2H = 0;
LED1( ON );
LED2( OFF );
LED3( OFF );
printf("Key1 is Low!\r\n");
}
}
}
if(key1_H2L == 1)//μíμçƽ*¼ì2aμí±ä¸ß
{
if(Key1 == Key_Low)
{
OSTimeDlyHMSM(0, 0,0,100);
if (Key1 == Key_Low)
{
key1_H2L = 0;
key1_L2H = 0;
LED1( OFF );
LED2( OFF );
LED3( OFF );
printf("Key1 is High!\r\n");
}
}
}
}
}
void Task_KEY_2(void *p_arg)
{
(void)p_arg; // 'p_arg' 2¢ûóDóÃμ½£¬·àÖ1±àòëÆ÷ìáê¾¾ˉ¸æ
while (1)
{
/******************KEY1¼ì2aÄ£¿é*******************/
if((key2_H2L == 0)&&(key2_L2H == 0))//Æeê¼×′쬸ßμçƽ*¼ì2a¸ß±äμí
{
if(Key2 == Key_High)
{
OSTimeDlyHMSM(0, 0,0,100);
if (Key2 == Key_High)
{
key2_H2L = 1;
key2_L2H = 0;
LED2( ON );
LED1( OFF );
LED3( OFF );
printf("Key2 is Low!\r\n");
}
}
}
if(key2_H2L == 1)//μíμçƽ*¼ì2aμí±ä¸ß
{
if(Key2 == Key_Low)
{
OSTimeDlyHMSM(0, 0,0,100);
if (Key2 == Key_Low)
{
key2_H2L = 0;
key2_L2H = 0;
LED1( OFF );
LED2( OFF );
LED3( OFF );
printf("Key2 is High!\r\n");
}
}
}
}
}
int main(void)
{
BSP_Init();
OSInit();
OSTaskCreate(Task_KEY_1,(void *)0, //′′½¨èÎÎñ1
&task_key1_stk[TASK_KEY1_STK_SIZE-1], TASK_KEY1_PRIO);
OSTaskCreate(Task_KEY_2,(void *)0, //′′½¨èÎÎñ2
&task_key2_stk[TASK_KEY2_STK_SIZE-1], TASK_KEY2_PRIO);
OSStart();
return 0;
}
任务优先级设置:
#define TASK_KEY1_PRIO 4
#define TASK_KEY2_PRIO 5
理论正常现象:
按下K1, LED亮,绿色,松开K1,LED灭;
按下K2, LED亮,蓝色,松开K2,LED灭;
问题:只有任务KEY1可以运行,任务KEY2不运行;
如果#define TASK_KEY1_PRIO 5
#define TASK_KEY2_PRIO 4
则只有任务KEY2可以运行,任务KEY1不运行;
请教大神帮忙看看,谢谢!
|
|