ucosiii 消息队列处理

OS_Q消息队列传输的是指针,所以在传输过程中,需要保持指针所在变量保持。

/*
************************************************************
*   函数名称:   KEY_Task
*
*   函数功能:   扫描按键是否按下,如果有按下,进行对应的处理
*
*   入口参数:   void类型的参数指针
*
*   返回参数:   无
*
*   说明:     按键任务
************************************************************
*/
OS_Q    KeyTaskQ;
void KEY_Task(void *pdata)
{
    OS_ERR err;

    uint8_t keyValue = KEYNONE;
    uint8_t s_keyValue = KEYNONE;                       //每次循环后,keyValue的值会变,所有添加s_keyValue

    OSQCreate(&KeyTaskQ,"KeyTaskQ",4,&err);

    while(1)
    {

        OSTimeDly(10, OS_OPT_TIME_PERIODIC, &err);

        Led1_Set(LED_OFF);Led2_Set(LED_OFF);

        keyValue = Keyboard();

        if(keyValue == KEYNONE) continue;

        switch(keyValue)                                //扫描按键状态
        {
            case KEY0DOWN:                              //如果是key0单击事件
            case KEY1DOWN:
            case KEY2DOWN:
            case KEY3DOWN:
                s_keyValue = keyValue;
                OSQPost(&KeyTaskQ,&s_keyValue,1,OS_OPT_POST_FIFO ,&err);
                if(err == OS_ERR_NONE)
                    Led2_Set(LED_ON);
            break;

            case KEY0DOWNLONG:{
                static bool bLight = true;
                bLight = !bLight;
                inf_lcd_display_set(bLight);
            }break;

            case KEY1DOWNLONG:

                oneNetInfo.sendData = SEND_TYPE_PICTURE;        //上传图片

            break;

            case KEY2DOWNLONG:

                OneNet_PushData("6056130", "{redled}1", strlen("{redled}1"));

            break;

            case KEY3DOWNLONG:

                OneNet_PushData("6056130", "{redled}0", strlen("{redled}0"));

            break;

            default:
                Led1_Set(LED_ON);
            break;
        }
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值