From 146c6d8b3fe8d5087c52d4d7e50b906cf0266431 Mon Sep 17 00:00:00 2001 From: Zhangwen <13970730+mkc46119@user.noreply.gitee.com> Date: Sat, 1 Mar 2025 16:27:35 +0800 Subject: [PATCH] fix: appstatus task --- .vscode/settings.json | 8 +- source/app/app_config.c | 5 ++ source/app/app_config.h | 13 ++- source/app/app_task_speech.c | 14 ---- source/app/app_task_speech.h | 22 +---- source/app/main.c | 153 ++++++++++++++++++----------------- source/app/main.h | 8 +- source/app/task_appstatus.c | 111 +++++++++++++++++++++++++ source/app/task_appstatus.h | 31 +++++++ source/app/task_btn.c | 2 +- source/app/task_key.c | 2 + source/bsp/bsp_WT2605B.c | 65 +++++++++++++++ source/bsp/bsp_WT2605B.h | 50 ++++++++++++ source/bsp/bsp_config.c | 12 +-- source/bsp/bsp_config.h | 17 ++-- source/bsp/bsp_key.c | 9 +++ source/bsp/bsp_key.h | 15 ++++ source/bsp/bsp_led.c | 16 ++++ source/bsp/bsp_led.h | 15 ++++ source/ctask/time.c | 2 +- 20 files changed, 438 insertions(+), 132 deletions(-) create mode 100644 source/app/task_appstatus.c create mode 100644 source/app/task_appstatus.h create mode 100644 source/bsp/bsp_WT2605B.c create mode 100644 source/bsp/bsp_WT2605B.h create mode 100644 source/bsp/bsp_key.c create mode 100644 source/bsp/bsp_key.h create mode 100644 source/bsp/bsp_led.c create mode 100644 source/bsp/bsp_led.h diff --git a/.vscode/settings.json b/.vscode/settings.json index ae272f8..2fde315 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -31,6 +31,12 @@ "app_data_save.h": "c", "task_modbus.h": "c", "app_task_tcp.h": "c", - "msp_eeprom.h": "c" + "msp_eeprom.h": "c", + "bsp_oid.h": "c", + "bsp_led.h": "c", + "bsp_wt2605.h": "c", + "bsp_key.h": "c", + "task_appstatus.h": "c", + "bsp_wt2605b.h": "c" } } \ No newline at end of file diff --git a/source/app/app_config.c b/source/app/app_config.c index 925064b..1f6799e 100644 --- a/source/app/app_config.c +++ b/source/app/app_config.c @@ -103,6 +103,7 @@ void L3_reg_reset(void) { U8 i = 0; + R.app_status = POW_OFF; R.pen_sta = 0; @@ -116,6 +117,8 @@ void L3_reg_reset(void) R.game.type = 0; R.game.dat = 0; + + for(i=0;istatus != R.app_status) + { + s->status = R.app_status; + L2_task_go_Tdelay(D_task_HANDLECHANGE,D_Tdelay_300ms); + } + TTSS_Task_step(D_task_HANDLECHANGE) + if(s->status == POW_OFF) + { + // LED灯灭 + RED_LED = LED_OFF; + GREEN_LED = LED_OFF; + // 音频播放关机语音后断电 + L2_WT2605B_broadcast(&audio_powerdown); + Lc_delay_ms(1000); + L2_WT2605B_PWROFF(); + // OID和WIFI断电 + L0_PW_3V3_OFF(); + + } + else if (s->status == POW_ON) + { + // LED红灯常亮,LED绿灯灭 + RED_LED = LED_ON; + GREEN_LED = LED_OFF; + // 音频通电后播放开机语音 + L2_WT2605B_PWRON(); + Lc_delay_ms(1000); + L2_WT2605B_broadcast(&audio_wellcome); + // OID和WIFI通电 + L0_PW_3V3_ON(); + } + else if (s->status == WIFI_CONNECTED) + { + // LED红绿交替闪烁 + RED_LED = ~RED_LED; + GREEN_LED = ~GREEN_LED; + // 音频播放 + L2_WT2605B_PWRON(); + Lc_delay_ms(1000); +// L2_WT2605B_broadcast(audio_Wifi_Connected); + // OID和WIFI通电 + L0_PW_3V3_ON(); + + } + else if (s->status == TCP_CONNECTED) + { + // LED红灯灭,LED绿灯常亮 + RED_LED = LED_OFF; + GREEN_LED = LED_ON; + // 音频播放 + L2_WT2605B_PWRON(); + Lc_delay_ms(1000); +// L2_WT2605B_broadcast(audio_TCP_Connected); + // OID和WIFI通电 + L0_PW_3V3_ON(); + + } + else if (s->status == WIFI_CONFIG) + { + // LED红灯闪烁,LED绿灯灭 + RED_LED = ~RED_LED; + GREEN_LED = LED_OFF; + // 音频播放 + L2_WT2605B_PWRON(); + Lc_delay_ms(1000); +// L2_WT2605B_broadcast(&audio_Wifi_Config); + // OID和WIFI通电 + L0_PW_3V3_ON(); + } + L2_task_go_Tdelay(D_task_DETECTCHANGE,D_Tdelay_300ms); + + TTSS_Task_end(); +} \ No newline at end of file diff --git a/source/app/task_appstatus.h b/source/app/task_appstatus.h new file mode 100644 index 0000000..c432b3b --- /dev/null +++ b/source/app/task_appstatus.h @@ -0,0 +1,31 @@ +//////////////////////////////////////////////////////////////////////////// +///@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 _APPSTATUS_TASK_APPSTATUS_H +#define _APPSTATUS_TASK_APPSTATUS_H + +#include "../ctask/task.h" +#include "../clib/clib.h" +#include "app_config.h" + +typedef struct _s_task_appstatus +{ + TS_task task; + APP_STATUS status; +}S_TASK_APPSTATUS; + +extern S_TASK_APPSTATUS _s_task_appstatus; +extern void L3_task_AppStatus_init(void); +extern void L3_task_appstatus_handler(S_TASK_APPSTATUS *s); + +#endif // #ifndef diff --git a/source/app/task_btn.c b/source/app/task_btn.c index acba56b..54644c9 100644 --- a/source/app/task_btn.c +++ b/source/app/task_btn.c @@ -31,7 +31,7 @@ void L3_task_btn_handler(void) } break; case KEY_DOWN: - LED2 = ~LED2; + RED_LED = ~RED_LED; L0_uart0_uchex(g_Key); L0_uart0_0d0a(); g_Key = KEY_NULL; diff --git a/source/app/task_key.c b/source/app/task_key.c index 237612e..a88f153 100644 --- a/source/app/task_key.c +++ b/source/app/task_key.c @@ -14,6 +14,8 @@ #include "../msp/uart3.h" #include "../msp/uart0.h" #include "app_task_speech.h" +#include "../bsp/bsp_key.h" +#include "../bsp/bsp_WT2605B.h" struct _s_task_key_ s_task_key_handle; diff --git a/source/bsp/bsp_WT2605B.c b/source/bsp/bsp_WT2605B.c new file mode 100644 index 0000000..afc57c3 --- /dev/null +++ b/source/bsp/bsp_WT2605B.c @@ -0,0 +1,65 @@ +#include "bsp_WT2605B.h" +#include "../msp/UART3.h" + + +TS_SPEECH_AUDIO audio_wellcome = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x31,0x8F,0xEF}; +TS_SPEECH_AUDIO audio_up = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x32,0x90,0xEF}; +TS_SPEECH_AUDIO audio_down = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x33,0x91,0xEF}; +TS_SPEECH_AUDIO audio_zmg = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x34,0x92,0xEF}; +TS_SPEECH_AUDIO audio_zbt = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x35,0x93,0xEF}; +TS_SPEECH_AUDIO audio_SchulteGrid = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x36,0x94,0xEF}; +TS_SPEECH_AUDIO audio_select = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x37,0x95,0xEF}; +TS_SPEECH_AUDIO audio_begin = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x38,0x96,0xEF}; +TS_SPEECH_AUDIO audio_tip = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x39,0x97,0xEF}; +TS_SPEECH_AUDIO audio_powerdown = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x3A,0x98,0xEF}; + +TS_SPEECH_AUDIO audio_zmg_again = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x3B,0x99,0xEF}; +TS_SPEECH_AUDIO audio_zmg_success = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x3C,0x9A,0xEF}; + +TS_SPEECH_VOLUME volume_control = {0x7E,0x04,0xAE,0x1E,0xD0,0xEF}; + + +void L2_WT2605B_init() +{ + D_stdIO_P0(BITN0); + D_stdIO_P0(BITN1); + // 模块电源控制 + D_stdIO_P0(BITN5); +} + +void L2_WT2605B_PWRON() +{ + D_P05_OFF(); +} +void L2_WT2605B_PWROFF() +{ + D_P05_ON(); +} + +void L2_WT2605B_Broadcast(TS_SPEECH_AUDIO *music) +{ + L0_uart3_sendArray((U8 *)&music,9); +} + +void L2_WT2605B_VioceUp(void) +{ + if (volume_control.grade <= 0x1E) + { + volume_control.grade = volume_control.grade + 1; + } + volume_control.crc = 0xab; + + L0_uart3_sendArray((U8 *)&volume_control,6); +} + +void L2_WT2605B_VioceDown(void) +{ + if (volume_control.grade >= 0x01) + { + volume_control.grade = volume_control.grade - 1; + } + volume_control.crc == 0xab; + + L0_uart3_sendArray((U8 *)&volume_control,6); +} + diff --git a/source/bsp/bsp_WT2605B.h b/source/bsp/bsp_WT2605B.h new file mode 100644 index 0000000..24a806c --- /dev/null +++ b/source/bsp/bsp_WT2605B.h @@ -0,0 +1,50 @@ +#ifndef BSP_WT2605B_H +#define BSP_WT2605B_H + +#include "bsp_config.h" + +// 播放指定音频 +typedef struct +{ + vU8 start; + vU8 num; + vU8 cmd; + vU8 file[4]; + vU8 crc; + vU8 end; +}TS_SPEECH_AUDIO; + +// 音量控制 +typedef struct +{ + vU8 start; + vU8 num; + vU8 cmd; + vU8 grade; + vU8 crc; + vU8 end; +}TS_SPEECH_VOLUME; + +extern TS_SPEECH_AUDIO audio_wellcome; +extern TS_SPEECH_AUDIO audio_up; +extern TS_SPEECH_AUDIO audio_down; +extern TS_SPEECH_AUDIO audio_zmg; +extern TS_SPEECH_AUDIO audio_zbt; +extern TS_SPEECH_AUDIO audio_SchulteGrid; +extern TS_SPEECH_AUDIO audio_select; +extern TS_SPEECH_AUDIO audio_begin; +extern TS_SPEECH_AUDIO audio_tip; +extern TS_SPEECH_AUDIO audio_powerdown; + +extern TS_SPEECH_AUDIO audio_zmg_again; +extern TS_SPEECH_AUDIO audio_zmg_success; + +extern TS_SPEECH_VOLUME volume_control; + +extern void L2_WT2605B_init(); +extern void L2_WT2605B_PWRON(); +extern void L2_WT2605B_PWROFF(); +extern void L2_WT2605B_broadcast(TS_SPEECH_AUDIO *music); +extern void L2_WT2605B_VioceUp(); +extern void L2_WT2605B_VioceDown(); +#endif \ No newline at end of file diff --git a/source/bsp/bsp_config.c b/source/bsp/bsp_config.c index 7dd29bb..e97ddf2 100644 --- a/source/bsp/bsp_config.c +++ b/source/bsp/bsp_config.c @@ -66,16 +66,10 @@ void L0_board_config(void) D_stdIO_P1(BITN0); D_stdIO_P1(BITN1); D_stdIO_P1(BITN2); - //D_OpenD_P0(BITN0); - //D_OpenD_P0(BITN1); - D_stdIO_P0(BITN0); - D_stdIO_P0(BITN1); + D_stdIO_P1(BITN6); // D_stdIO_P3(BITN2); - D_HighR_P3(BITN2); - D_HighR_P3(BITN3); - D_stdIO_P3(BITN4); D_stdIO_P3(BITN5); @@ -83,11 +77,7 @@ void L0_board_config(void) D_stdIO_P3(BITN7); D_stdIO_P2(BITN7); D_stdIO_P2(BITN6); - //D_HighI_P5(BITN5); D_stdIO_P0(BITN2); - D_OpenD_P5(BITN5); - - D_HighR_P4(BITN0); D_HighI_P3(BITN4); D_HighI_P5(BITN0); diff --git a/source/bsp/bsp_config.h b/source/bsp/bsp_config.h index c1e21f1..b753abe 100644 --- a/source/bsp/bsp_config.h +++ b/source/bsp/bsp_config.h @@ -160,9 +160,13 @@ //外设定义 #define LED1 P27 //D4 - #define LED2 P26 //D4 - #define LED3 P02 //D4 - #define LED4 P55 //D4 + //#define LED2 P55 //D4 + #define LED3 P02 //D4 + //#define LED4 P26 //D4 + + + + //笔头 #define SCK P34 @@ -173,12 +177,7 @@ #define L0_PW_3V3_ON() D_P53_OFF() #define L0_PW_3V3_OFF() D_P53_ON() - - //按键 - #define key1 P32 //音量增大 - #define key2 P33 //音量减小 - #define key3 P40 //开关机 - #define Key (key1 && key2 && key3) + //EEP存储地址定义 #define D_EEP_SECTOR_SIZE 0x200 //每个扇区0x200==512bytes diff --git a/source/bsp/bsp_key.c b/source/bsp/bsp_key.c new file mode 100644 index 0000000..d21edc1 --- /dev/null +++ b/source/bsp/bsp_key.c @@ -0,0 +1,9 @@ +#include "bsp_key.h" + +void L2_key_init() +{ + D_stdIO_P3(BITN2); + D_stdIO_P3(BITN3); //准双向口 + D_stdIO_P4(BITN0); +} + diff --git a/source/bsp/bsp_key.h b/source/bsp/bsp_key.h new file mode 100644 index 0000000..bcf2f5c --- /dev/null +++ b/source/bsp/bsp_key.h @@ -0,0 +1,15 @@ +#ifndef BSP_KEY_H +#define BSP_KEY_H + +#include "bsp_config.h" + +//按键 +#define key1 P32 //音量增大 +#define key2 P33 //音量减小 +#define key3 P40 //开关机 +#define Key (key1 && key2 && key3) + + +extern void L2_key_init(); + +#endif \ No newline at end of file diff --git a/source/bsp/bsp_led.c b/source/bsp/bsp_led.c new file mode 100644 index 0000000..becf369 --- /dev/null +++ b/source/bsp/bsp_led.c @@ -0,0 +1,16 @@ +#include "bsp_led.h" + +void L2_led_init() +{ + D_HighI_P5(BITN5); +} + +void L2_led_ON(u8 LED) +{ + LED = LED_ON; +} + +void L2_led_OFF(u8 LED) +{ + LED = LED_OFF; +} diff --git a/source/bsp/bsp_led.h b/source/bsp/bsp_led.h new file mode 100644 index 0000000..99f5eba --- /dev/null +++ b/source/bsp/bsp_led.h @@ -0,0 +1,15 @@ +#ifndef BSP_LED_H +#define BSP_LED_H + +#include "bsp_config.h" + +#define RED_LED P55 //单色绿灯 +#define GREEN_LED P26 //双色红灯 + +#define LED_ON 1 +#define LED_OFF 0 + + +extern void L2_led_init(); + +#endif \ No newline at end of file diff --git a/source/ctask/time.c b/source/ctask/time.c index 757677c..09ae7fd 100644 --- a/source/ctask/time.c +++ b/source/ctask/time.c @@ -40,7 +40,7 @@ void timer0_isrHandle (void) D_SERVE_TIMER0 L1_tick_tick(); ///系统中的1sflag 和以10ms为颗粒的延时使用 为tdelay服务 - Key_Scan(); +// Key_Scan(); //串口回调 for(i = 0; i < SERIAL_MAX_NUM; i++)