mico中長短按

        剛出來工作兩個月,學到不多不少,剛開始是在alios things上對wifi做二次開發,用慶科的3080弄了一個pwm冷暖色調的智能燈,成果出來後發現3080模塊塊頭實在是太大,只好轉戰mico,在mico上又做了四路入牆開關和智能插座。項目終於結束,現在終於有時間整理一下收穫了,我們今天先從按鍵長短按開題

static void linkkit_reset(void)//清除熱點信息
{
    mkv_item_delete("ssid");
    mkv_item_delete("passwd");
    mkv_item_delete("bssid");
    awss_report_reset();
}
void switch1_on(void)
{
    allreport = 1;
    MicoGpioOutputHigh(LED1_USR);
    switch1_state = 1;         //開關燈標誌
    switch1_report_flag = 0;  //上報屬性標誌
}
void switch1_off(void)
{
    allreport = 1;
    MicoGpioOutputLow(LED1_USR);
    switch1_state = 0;
    switch1_report_flag = 1;
}
static void on_awss_key1_short_clicked(void)//短按
{

    if(switch1_state == 0)
    {
        switch1_on();
    }
    else{
        switch1_off();
    }

}

static void on_awss_key1_long_clicked(void) //長按清除熱點信息並配網
{
    linkkit_reset();
    mico_system_power_perform(NULL, eState_Software_Reset);
    mico_rtos_send_asynchronous_event(MICO_NETWORKING_WORKER_THREAD, awss_config_press, NULL);
}

static void user_key1_handler( void* arg )//按鍵中斷,開啓定時器
{
    int level = MicoGpioInputGet(KEY1_USR_BUTTON);
    if(level == 0)
    {
       mico_start_timer(&_user_key1_timer);
    }
}
static void _user_key1_timeout_handler( void* arg )
{
    if(MicoGpioInputGet(KEY1_USR_BUTTON) == 0)    //按鍵按下
    {
        key1_count++;        //計算按下按下的時間值
    }
    else
    {
        mico_stop_timer(&_user_key1_timer);
        if(key1_count > KEY1_PRESS_LONG_TIME)   //按鍵長按
        {
            on_awss_key1_long_clicked();
        }
        else if(key1_count != 0 && key1_count > 50 && key1_count < KEY1_PRESS_LONG_TIME) //按鍵短按
        {
            on_awss_key1_short_clicked();
        }
        key1_count = 0;      //按鍵計數值清零
    }
}
void button1_gpio_init(void)
{
    MicoGpioInitialize(KEY1_USR_BUTTON,INPUT_PULL_UP);
    MicoGpioInitialize(LED1_USR,OUTPUT_PUSH_PULL);
    MicoGpioEnableIRQ(KEY1_USR_BUTTON, IRQ_TRIGGER_FALLING_EDGE ,user_key1_handler,NULL);
    mico_init_timer(&_user_key1_timer, 1, _user_key1_timeout_handler, NULL);//1ms定時
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章