diff --git a/.vscode/settings.json b/.vscode/settings.json index f6d9d0e..eed65d3 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -38,6 +38,7 @@ "bsp_key.h": "c", "task_appstatus.h": "c", "bsp_wt2605b.h": "c", - "task_apptset.h": "c" + "task_apptset.h": "c", + "task_keystatus.h": "c" } } \ No newline at end of file diff --git a/source/app/app_config.c b/source/app/app_config.c index 40db913..2ec6339 100644 --- a/source/app/app_config.c +++ b/source/app/app_config.c @@ -103,11 +103,12 @@ void L3_reg_reset(void) { U8 i = 0; - R.app_status = POW_ON; + R.app_status = POW_OFF; R.pen_sta = 0; R.pen_net_sta = 0; + R.pen_ele_sta = 0; R.question_sta = 0; R.spee_order = 0; diff --git a/source/app/app_config.h b/source/app/app_config.h index d028915..e33819b 100644 --- a/source/app/app_config.h +++ b/source/app/app_config.h @@ -34,8 +34,8 @@ typedef struct pen_point typedef enum { - POW_OFF = 0, //开机状态 - POW_ON = 1, //关机状态 + POW_OFF = 0, //关机状态 + POW_ON = 1, //开机状态 WIFI_CONFIG = 2, //WIFI配置连接中 WIFI_CONNECTED = 3, //WIFI连接成功 TCP_CONNECTED = 4, //TCP连接成 diff --git a/source/app/main.c b/source/app/main.c index fee198d..93bd737 100644 --- a/source/app/main.c +++ b/source/app/main.c @@ -43,6 +43,8 @@ void L0_TASK_init(void) L3_task_AppStatus_init(); L3_task_AppTest_init(); + + L3_task_KeyStatus_init(); // //游戏任务初始化 // L3_task_game_init(); // //寄存器监听任务初始化 @@ -103,6 +105,7 @@ void main(void) while(1) { // L1_Oid_readoid(); + if(1 == s_nos_tick.t1s_heartbeat)//1s { @@ -120,27 +123,14 @@ void main(void) // } // L0_uart0_sendArrayHex(data_save_arr, 30); L0_uart0_uc('.'); - // i ++; - // if (i == 2) - // { - // L2_GREEN_LED_ON(); - - // } - // if (i == 4) - // { - // L2_RED_LED_ON(); - // } - // if (i == 6) - // { - // i = 0; - // L2_LED_OFF(); - // } - - // L0_uart3_sendArray((U8 *)&audio_up,9); + // L0_uart0_uc(L2_ReadKey1()); + // L0_uart0_uc(L2_ReadKey2()); + // L0_uart0_uc(L2_ReadKey3()); } L3_task_appstatus_handler(&_s_task_appstatus); - L3_task_AppTest_handler(&_s_task_apptest); + // L3_task_AppTest_handler(&_s_task_apptest); + L3_task_keystatus_handler(&_s_task_keystatus); // // 串口2的 接收数据 测试 // if(ts_uart[uNum2].r.ok == 1) diff --git a/source/app/main.h b/source/app/main.h index 3cff543..7a27894 100644 --- a/source/app/main.h +++ b/source/app/main.h @@ -70,6 +70,8 @@ #include "../app/task_appstatus.h" #include "../app/task_appTEST.h" +#include "../app/task_keystatus.h" + #include "../bsp/bsp_led.h" #include "../bsp/bsp_key.h" #include "../bsp/bsp_WT2605B.h" diff --git a/source/app/task_keystatus.c b/source/app/task_keystatus.c new file mode 100644 index 0000000..a390479 --- /dev/null +++ b/source/app/task_keystatus.c @@ -0,0 +1,87 @@ +//////////////////////////////////////////////////////////////////////////// +///@copyright Copyright (c) 2018, 传控科技 All rights reserved. +///------------------------------------------------------------------------- +/// @file bsp_drv.c +/// @brief bsp @ driver config +///------------------------------------------------------------------------- +/// @version 1.0 +/// @author CC +/// @date 20180331 +/// @note cc_AS_stc02 +////////////////////////////////////////////////////////////////////////////// + +#include "../app/task_keystatus.h" +#include "../bsp/bsp_key.h" +#include "../app/app_config.h" +#include "../msp/uart0.h" + + +S_TASK_KEYSTATUS _s_task_keystatus; + + +void L3_task_KeyStatus_init(void) +{ + L1_task_init(&_s_task_keystatus.task); + _s_task_keystatus.Key1_Down_Begin_Time = 0; + _s_task_keystatus.Key1_handled = 0; + _s_task_keystatus.Key2_Down_Begin_Time = 0; + _s_task_keystatus.Key3_Down_Begin_Time = 0; + L3_task_s_go(_s_task_keystatus,D_task_init); +} + +#define D_task_KEY_DETECT 0x50 + + +void L3_task_keystatus_handler(S_TASK_KEYSTATUS *s) +{ + TTSS_Task_init() + + L2_task_go_Tdelay(D_task_KEY_DETECT,D_Tdelay_300ms); + + TTSS_Task_step(D_task_KEY_DETECT) + if(L2_ReadKey1() == Key_Down) + { + if (s->Key1_Down_Begin_Time == 0) + { + s->Key1_Down_Begin_Time = D_sys_now; + } + else + { + U32 diff = D_sys_now -s->Key1_Down_Begin_Time; + L0_uart0_ulhex(diff); + if (diff >= LongKey_PWR_MSeconds/JIFFIES && s->Key1_handled == 0) + { + if (R.app_status == POW_OFF) + { + R.app_status = POW_ON; + s->Key1_Down_Begin_Time = 0; + s->Key1_handled = 1; + } + else + { + R.app_status = POW_OFF; + s->Key1_Down_Begin_Time = 0; + s->Key1_handled = 1; + } + } + else if (diff >= LongKey_WIFICONF_MSeconds/JIFFIES && s->Key1_handled == 0) + { + if (L2_ReadKey3() == Key_Down) + { + if (R.app_status != POW_OFF) + { + R.app_status = WIFI_CONFIG; + s->Key1_handled = 1; + } + } + } + } + } + else + { + s->Key1_Down_Begin_Time = 0; + s->Key1_handled = 0; + } + L2_task_go_Tdelay(D_task_KEY_DETECT,D_Tdelay_300ms); + TTSS_Task_end(); +} \ No newline at end of file diff --git a/source/app/task_keystatus.h b/source/app/task_keystatus.h new file mode 100644 index 0000000..7e283ef --- /dev/null +++ b/source/app/task_keystatus.h @@ -0,0 +1,38 @@ +//////////////////////////////////////////////////////////////////////////// +///@copyright Copyright (c) 2018, 传控科技 All rights reserved. +///------------------------------------------------------------------------- +/// @file bsp_drv.h +/// @brief bsp @ driver config +///------------------------------------------------------------------------- +/// @version 1.0 +/// @author CC +/// @date 20180331 +/// @note cc_AS_stc02 + +////////////////////////////////////////////////////////////////////////////// + +#ifndef _TASK_KEYSTATUS_H +#define _TASK_KEYSTATUS_H + +#include "../ctask/task.h" + + +#define LongKey_PWR_MSeconds 3000 +#define LongKey_WIFICONF_MSeconds 2000 + + +typedef struct _s_task_keystatus +{ + TS_task task; + U32 Key1_Down_Begin_Time; + U8 Key1_handled; + U32 Key2_Down_Begin_Time; + U32 Key3_Down_Begin_Time; +}S_TASK_KEYSTATUS; + +extern S_TASK_KEYSTATUS _s_task_keystatus; + +extern void L3_task_KeyStatus_init(void); +extern void L3_task_keystatus_handler(S_TASK_KEYSTATUS *s); + +#endif // #ifndef diff --git a/source/bsp/bsp_key.c b/source/bsp/bsp_key.c index d21edc1..63243b9 100644 --- a/source/bsp/bsp_key.c +++ b/source/bsp/bsp_key.c @@ -3,7 +3,46 @@ void L2_key_init() { D_stdIO_P3(BITN2); - D_stdIO_P3(BITN3); //准双向口 + D_stdIO_P3(BITN3);//准双向口 D_stdIO_P4(BITN0); + //初始化为高电平 + Key1 = Key2 = Key3 = 1; + } +U8 L2_ReadKey1(void) +{ + Key1 = 1; + if (Key1 == 0) + { + return Key_Down; + } + else + { + return Key_Up; + } +} +U8 L2_ReadKey2(void) +{ + Key2 = 1; + if (Key2 == 0) + { + return Key_Down; + } + else + { + return Key_Up; + } +} +U8 L2_ReadKey3(void) +{ + Key3 = 1; + if (Key3 == 0) + { + return Key_Down; + } + else + { + return Key_Up; + } +} \ No newline at end of file diff --git a/source/bsp/bsp_key.h b/source/bsp/bsp_key.h index bcf2f5c..6ee35ac 100644 --- a/source/bsp/bsp_key.h +++ b/source/bsp/bsp_key.h @@ -4,12 +4,18 @@ #include "bsp_config.h" //按键 -#define key1 P32 //音量增大 -#define key2 P33 //音量减小 -#define key3 P40 //开关机 -#define Key (key1 && key2 && key3) +#define Key_Down 0 +#define Key_Up 1 + +#define Key1 P32 //音量增大 +#define Key2 P33 //音量减小 +#define Key3 P40 //开关机 +// #define Key (key1 && key2 && key3) extern void L2_key_init(); +extern U8 L2_ReadKey1(void); +extern U8 L2_ReadKey2(void); +extern U8 L2_ReadKey3(void); #endif \ No newline at end of file