diff --git a/.vscode/settings.json b/.vscode/settings.json index 9cb9f22..f9bc8b4 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -61,6 +61,20 @@ "string": "c", "optional": "c", "memory": "c", - "new": "c" + "new": "c", + "array": "c", + "istream": "c", + "ostream": "c", + "tuple": "c", + "utility": "c", + "modbus.h": "c", + "sstream": "c", + "task_encrypt.h": "c", + "deque": "c", + "unordered_map": "c", + "vector": "c", + "string_view": "c", + "initializer_list": "c", + "app_eeprom.h": "c" } } \ No newline at end of file diff --git a/keilp/cc_as_stc02_ps5ws.uvprojx b/keilp/cc_as_stc02_ps5ws.uvprojx index c62c413..fc2b632 100644 --- a/keilp/cc_as_stc02_ps5ws.uvprojx +++ b/keilp/cc_as_stc02_ps5ws.uvprojx @@ -388,6 +388,16 @@ 1 ..\source\app\task_keystatus.c + + task_w600.c + 1 + ..\source\app\task_w600.c + + + task_SmartConfig.c + 1 + ..\source\app\task_SmartConfig.c + @@ -418,6 +428,21 @@ 1 ..\source\bsp\bsp_WT2605B.c + + bsp_wifi.c + 1 + ..\source\bsp\bsp_wifi.c + + + bsp_ooid.c + 1 + ..\source\bsp\bsp_ooid.c + + + bsp_oid.c + 1 + ..\source\bsp\bsp_oid.c + diff --git a/source/app/app_config.c b/source/app/app_config.c index d7e6fde..b7ff8c7 100644 --- a/source/app/app_config.c +++ b/source/app/app_config.c @@ -15,7 +15,10 @@ void L3_param_init(void) { G.head[0] = HEAD0; G.head[1] = HEAD1; + G.tail[0] = TAIL0; + G.tail[1] = TAIL1; + G.volume = 0x15; //U8 i; G.debug = 1; //station模式状态 diff --git a/source/app/app_config.h b/source/app/app_config.h index 59267e0..22489b3 100644 --- a/source/app/app_config.h +++ b/source/app/app_config.h @@ -107,6 +107,8 @@ typedef struct global_param U8 head[2]; U8 tail[2]; + // 喇叭音量 + U8 volume; //调试模式 U8 debug; U8 reset; diff --git a/source/app/app_data_save.c b/source/app/app_data_save.c deleted file mode 100644 index 866d697..0000000 --- a/source/app/app_data_save.c +++ /dev/null @@ -1,58 +0,0 @@ -#include "../app/app_data_save.h" -#include "../msp/msp_eeprom.h" -#include "app_config.h" - - -DATA_SAVE data_save_arr[DATA_SAVE_LEN] = {0}; - -//初始化存放数据的结构体数组data_save_arr -void data_save_init() -{ - int i = 0; - for(i = 0;i < DATA_SAVE_LEN; i++) - { - data_save_arr[i].head[0] = HEAD0; - data_save_arr[i].head[1] = HEAD1; - data_save_arr[i].available = 1; - data_save_arr[i].val = 0; - data_save_arr[i].tail[0] = TAIL0; - data_save_arr[i].tail[1] = TAIL1; - } -} -//存放数据到eeprom中:1.从eeprom中取出数组 2.遍历寻找空位 3.把数组放回(写入)eeprom中 -void data_save_push(U8 Data) -{ - int i = 0; - int free = 0; - // 从eeprom中取出数组 - L0_Iap_Read_array(EEPROM_DATA_ADDR, data_save_arr,sizeof(data_save_arr)); - if(data_save_arr[0].head[0] != HEAD0 || data_save_arr[0].head[1] != HEAD1 - || data_save_arr[0].tail[0] != TAIL0 || data_save_arr[0].tail[1] != TAIL1) - { - data_save_init(); - } - // 遍历寻找空位 - for(i = 0;i < DATA_SAVE_LEN; i++) - { - if(data_save_arr[i].available == 1) - { - free = i; - break; - } - } - // 当都有数据时 - if(i == DATA_SAVE_LEN) - { - for(i = 0; i < DATA_SAVE_LEN - 1; i++) - { - data_save_arr[i] = data_save_arr[i+1]; - } - free = DATA_SAVE_LEN - 1; - } - // 放到free位置 - data_save_arr[free].available = 0; - data_save_arr[free].val = Data; - - // 把数组放回(写入)eeprom中 - L0_Iap_Program_array(EEPROM_DATA_ADDR, data_save_arr,sizeof(data_save_arr)); -} diff --git a/source/app/app_data_save.h b/source/app/app_data_save.h deleted file mode 100644 index ea2fbd2..0000000 --- a/source/app/app_data_save.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef _APP_DATA_SAVE_H -#define _APP_DATA_SAVE_H - -#include "../bsp/bsp_config.h" - -//定义所使用内存的起始和结尾标志 -#define HEAD0 0xa3 -#define HEAD1 0xa4 -#define TAIL0 0xa5 -#define TAIL1 0xa6 - -#define DATA_SAVE_LEN 10 //寄存器需要存放的最大数量为10组 - -// #define EEPROM_DATA_ADDR 0x00 //定义一个起始地址为0x00的寄存器 - -//用来存储重量数据的结构体(数组) -typedef struct -{ - U8 head[2]; - U8 available; - U8 val; - U8 tail[2]; - -}DATA_SAVE; - -extern DATA_SAVE data_save_arr[DATA_SAVE_LEN]; - - -extern void data_save_init(void); -extern void data_save_push(U8 Data); - -#endif \ No newline at end of file diff --git a/source/app/app_eeprom.c b/source/app/app_eeprom.c new file mode 100644 index 0000000..271627d --- /dev/null +++ b/source/app/app_eeprom.c @@ -0,0 +1,13 @@ +#include "../app/app_eeprom.h" +#include "../app/app_config.h" + + +// 读取EEPROM中的参数到G结构体 +void L3_param_read(void) +{ + L0_Iap_Read_array(EEPROM_DATA_ADDR, (U8*)&G,sizeof(G)); + if(G.head[0] != HEAD0 || G.head[1] != HEAD1 || G.tail[0] != TAIL0 || G.tail[1] != TAIL1) + { + L3_param_init(); + } +} diff --git a/source/app/app_eeprom.h b/source/app/app_eeprom.h new file mode 100644 index 0000000..522d4d5 --- /dev/null +++ b/source/app/app_eeprom.h @@ -0,0 +1,9 @@ +#ifndef _APP_EEPROM_H +#define _APP_EEPROM_H + +#include "../msp/msp_eeprom.h" + + +extern void L3_param_read(void); + +#endif \ No newline at end of file diff --git a/source/app/main.c b/source/app/main.c index 991c155..b4ca8fd 100644 --- a/source/app/main.c +++ b/source/app/main.c @@ -72,11 +72,13 @@ void main(void) { //板U初始化 L0_MCU_init(); + //eeprom参数读取 + L3_param_read(); //BSP层初始化 L0_BSP_init(); //任务初始化 L0_TASK_init(); - + //获取mcu id L0_id_get_rom(G.mcu_id); L0_uart0_sendstr("MCU_ID = "); @@ -87,14 +89,6 @@ void main(void) L0_uart0_sendArray("PEN_V2",6); L0_uart0_0d0a(); - // 读取EEPROM中的参数到G结构体 - L0_Iap_Read_array(EEPROM_DATA_ADDR,&G,sizeof(G)); - if(G.head[0] != HEAD0 || G.head[1] != HEAD1 || G.tail[0] != TAIL0 || G.tail[1] != TAIL1) - // if(1) - { - L3_param_init(); - } - while(1) { // L1_Oid_readoid(); @@ -102,25 +96,25 @@ void main(void) if(1 == s_nos_tick.t1s_heartbeat)//1s { s_nos_tick.t1s_heartbeat = 0;//置0清空 - // L0_uart0_uc('.'); + L0_uart0_uc('.'); // L0_uart0_sendstr("_s_w600_mode ="); // L0_uart0_uchex(_s_task_w600_para.mode); // L0_uart0_0d0a(); // L0_uart0_sendstr("R.app_status ="); // L0_uart0_uchex(R.app_status); } - // 系统状态任务 - L3_task_appstatus_handler(&_s_task_appstatus); - // 系统状态测试任务 - // L3_task_AppTest_handler(&_s_task_apptest); - // 按键状态任务 + // // 系统状态任务 + // L3_task_appstatus_handler(&_s_task_appstatus); + // // 系统状态测试任务 + // // L3_task_AppTest_handler(&_s_task_apptest); + // // 按键状态任务 L3_task_keystatus_handler(&_s_task_keystatus); - // WIFI任务 - if (R.app_status != POW_OFF) - { - L3_uart2_wifi_parse(); - L2_task_W600_flow_handle(&_s_task_w600_para); - } + // // WIFI任务 + // if (R.app_status != POW_OFF) + // { + // L3_uart2_wifi_parse(); + // L2_task_W600_flow_handle(&_s_task_w600_para); + // } #if 0 if(s_uart0_rec.ok) diff --git a/source/app/main.h b/source/app/main.h index 2b3d41f..bf84cbb 100644 --- a/source/app/main.h +++ b/source/app/main.h @@ -66,9 +66,10 @@ #include "../app/app_task_tcp_control.h" #include "../app/app_task_speech.h" #include "../app/task_game.h" -#include "../app/app_data_save.h" + #include "../app/app_config.h" +#include "../app/app_eeprom.h" #include "../app/task_appstatus.h" #include "../app/task_appTEST.h" #include "../app/task_keystatus.h" @@ -76,7 +77,6 @@ #include "../app/task_SmartConfig.h" - #include "../bsp/bsp_led.h" #include "../bsp/bsp_key.h" #include "../bsp/bsp_WT2605B.h" diff --git a/source/app/task_appstatus.c b/source/app/task_appstatus.c index 2437182..8189a48 100644 --- a/source/app/task_appstatus.c +++ b/source/app/task_appstatus.c @@ -65,7 +65,7 @@ void L3_task_appstatus_handler(S_TASK_APPSTATUS *s) // LED灯灭 L2_LED_OFF(); // // 音频播放关机语音后断电 - L2_WT2605B_broadcast(&audio_powerdown); + L2_WT2605B_Broadcast(&audio_powerdown); // Lc_delay_ms(1000); // L2_WT2605B_PWROFF(); // OID、WIFI关闭 @@ -78,7 +78,7 @@ void L3_task_appstatus_handler(S_TASK_APPSTATUS *s) // 音频通电后播放开机语音 // L2_WT2605B_PWRON(); // Lc_delay_ms(1000); - L2_WT2605B_broadcast(&audio_poweron); + L2_WT2605B_Broadcast(&audio_poweron); // OID、WIFI开启 L2_OID_WIFI_Open(); //wifi任务初始化 @@ -90,19 +90,19 @@ void L3_task_appstatus_handler(S_TASK_APPSTATUS *s) // 灯灭 L2_LED_OFF(); // 音频播放 - L2_WT2605B_broadcast(&audio_config_mode); + L2_WT2605B_Broadcast(&audio_config_mode); // 配网任务初始化,进入配网 // L3_gm35_send_str("+++"); L3_task_W600_flow_init(W600_SC); } else if (s->status == WIFI_CONFIG_Phone) { - L2_WT2605B_broadcast(&audio_config_phone); + L2_WT2605B_Broadcast(&audio_config_phone); } else if (s->status == WIFI_CONFIG_COMPLETE) { - L2_WT2605B_broadcast(&audio_config_complete); + L2_WT2605B_Broadcast(&audio_config_complete); // 配网成功,进入STAION模式 L3_task_W600_flow_init(W600_ST); } @@ -111,14 +111,14 @@ void L3_task_appstatus_handler(S_TASK_APPSTATUS *s) // 灯灭 L2_LED_OFF(); // 音频播放 - L2_WT2605B_broadcast(&audio_wifi_connected); + L2_WT2605B_Broadcast(&audio_wifi_connected); } else if (s->status == TCP_CONNECTED) { // LED红灯灭,LED绿灯常亮 L2_GREEN_LED_ON(); // 音频播放 - L2_WT2605B_broadcast(&audio_TCP_connected); + L2_WT2605B_Broadcast(&audio_TCP_connected); } L2_task_go_Tdelay(D_task_DETECTCHANGE,D_Tdelay_300ms); diff --git a/source/app/task_keystatus.c b/source/app/task_keystatus.c index 6425026..c3e34e0 100644 --- a/source/app/task_keystatus.c +++ b/source/app/task_keystatus.c @@ -11,11 +11,11 @@ ////////////////////////////////////////////////////////////////////////////// #include "../app/task_keystatus.h" -#include "../bsp/bsp_key.h" #include "../app/app_config.h" -#include "../msp/uart0.h" #include "../app/task_w600.h" - +#include "../bsp/bsp_key.h" +#include "../bsp/bsp_WT2605B.h" +#include "../msp/uart0.h" S_TASK_KEYSTATUS _s_task_keystatus; @@ -26,7 +26,10 @@ void L3_task_KeyStatus_init(void) _s_task_keystatus.Key1_Down_Begin_Time = 0; _s_task_keystatus.Key2_Down_Begin_Time = 0; _s_task_keystatus.Key3_Down_Begin_Time = 0; + _s_task_keystatus.Key1_handled = 0; + _s_task_keystatus.Key2_handled = 0; _s_task_keystatus.Key3_handled = 0; + L3_task_s_go(_s_task_keystatus,D_task_init); } @@ -36,7 +39,6 @@ void L3_task_KeyStatus_init(void) 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) @@ -72,16 +74,33 @@ void L3_task_keystatus_handler(S_TASK_KEYSTATUS *s) if (R.app_status != POW_OFF) { R.app_status = WIFI_CONFIG; - s->Key3_handled = 1; } } - } + } + } + } + if (L2_ReadKey1() == Key_Down) + { + if (s->Key1_handled == 0) + { + s->Key1_handled = 1; + L2_WT2605B_VioceUp(); // 音量增加 + } + } + if (L2_ReadKey2() == Key_Down) + { + if (s->Key2_handled == 0) + { + s->Key2_handled = 1; + L2_WT2605B_VioceDown(); // 音量减少 } } else { s->Key3_Down_Begin_Time = 0; + s->Key1_handled = 0; + s->Key2_handled = 0; s->Key3_handled = 0; } L2_task_go_Tdelay(D_task_KEY_DETECT,D_Tdelay_300ms); diff --git a/source/app/task_keystatus.h b/source/app/task_keystatus.h index 2700335..821b1ee 100644 --- a/source/app/task_keystatus.h +++ b/source/app/task_keystatus.h @@ -27,6 +27,8 @@ typedef struct _s_task_keystatus U32 Key1_Down_Begin_Time; U32 Key2_Down_Begin_Time; U32 Key3_Down_Begin_Time; + U8 Key1_handled; + U8 Key2_handled; U8 Key3_handled; }S_TASK_KEYSTATUS; diff --git a/source/bsp/bsp_WT2605B.c b/source/bsp/bsp_WT2605B.c index 9f30eb7..410257c 100644 --- a/source/bsp/bsp_WT2605B.c +++ b/source/bsp/bsp_WT2605B.c @@ -1,25 +1,22 @@ -#include "bsp_WT2605B.h" +#include "../bsp/bsp_WT2605B.h" +#include "../app/app_config.h" #include "../msp/UART3.h" +#include "../msp/UART0.h" +#include "../msp/msp_eeprom.h" -TS_SPEECH_AUDIO audio_powerdown = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x31,0x8F,0xEF}; -TS_SPEECH_AUDIO audio_poweron = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x32,0x90,0xEF}; -TS_SPEECH_AUDIO audio_wifi_connected = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x33,0x91,0xEF}; -TS_SPEECH_AUDIO audio_TCP_connected = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x34,0x92,0xEF}; -TS_SPEECH_AUDIO audio_config_mode = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x35,0x93,0xEF}; -TS_SPEECH_AUDIO audio_config_complete = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x36,0x94,0xEF}; -TS_SPEECH_AUDIO audio_config_phone = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x37,0x95,0xEF}; +TS_SPEECH_AUDIO audio_powerdown = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x31,0x8F,0xEF}; //电源关闭 +TS_SPEECH_AUDIO audio_poweron = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x32,0x90,0xEF}; //电源开启 +TS_SPEECH_AUDIO audio_wifi_connected = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x33,0x91,0xEF}; //WIFI连接成功 +TS_SPEECH_AUDIO audio_TCP_connected = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x34,0x92,0xEF}; //TCP连接成功 +TS_SPEECH_AUDIO audio_config_mode = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x35,0x93,0xEF}; //配置模式 +TS_SPEECH_AUDIO audio_config_complete = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x36,0x94,0xEF}; //配置完成 +TS_SPEECH_AUDIO audio_config_phone = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x37,0x95,0xEF}; //手机APP配置 +TS_SPEECH_AUDIO audio_volume_up = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x38,0x96,0xEF}; //音量增加 +TS_SPEECH_AUDIO audio_volume_down = {0x7E,0x07,0xA3,0x54,0x30,0x30,0x39,0x97,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_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}; +TS_SPEECH_VOLUME volume_control = {0x7E,0x04,0xAE,0x1E,0xD0,0xEF}; //音量控制 void L2_WT2605B_init() @@ -29,7 +26,8 @@ void L2_WT2605B_init() //电源控制引脚 D_HighI_P0(BITN5); L2_WT2605B_PWRON(); - + // 初始化音量 + L2_WT2605B_VolumeControl(G.volume); } void L2_WT2605B_PWRON() @@ -46,32 +44,46 @@ void L2_WT2605B_Broadcast(TS_SPEECH_AUDIO *music) L0_uart3_sendArray((U8 *)music,9); } -void L2_WT2605B_VioceControl(void) +void L2_WT2605B_VolumeControl(U8 grade) { - L2_WT2605B_Broadcast(&audio_zmg_again); - L2_WT2605B_VioceUp(); - L2_WT2605B_Broadcast(&audio_zmg_success); + volume_control.grade = grade; + volume_control.crc = volume_control.num + volume_control.cmd + volume_control.grade; + L0_uart3_sendArray((U8 *)&volume_control,6); } - +// 音量设置6个档位:0x15,0x17,0x19,0x1B,0x1D,0x1F void L2_WT2605B_VioceUp(void) { - if (volume_control.grade <= 0x1E) + if (volume_control.grade >= 0x15 && volume_control.grade < 0x1F) { - volume_control.grade = volume_control.grade + 1; + volume_control.grade = volume_control.grade + 2; + G.volume = volume_control.grade; + L0_Iap_Program_array(EEPROM_DATA_ADDR,(U8*)&G,sizeof(G)); } - volume_control.crc = 0xab; - - L0_uart3_sendArray((U8 *)&volume_control,6); + else + { + volume_control.grade = volume_control.grade; + G.volume = volume_control.grade; + L0_Iap_Program_array(EEPROM_DATA_ADDR,(U8*)&G,sizeof(G)); + } + L2_WT2605B_VolumeControl(G.volume); + L2_WT2605B_Broadcast(&audio_volume_up); } void L2_WT2605B_VioceDown(void) { - if (volume_control.grade >= 0x01) + if (volume_control.grade > 0x15 && volume_control.grade <= 0x1F) { - volume_control.grade = volume_control.grade - 1; + volume_control.grade = volume_control.grade - 2; + G.volume = volume_control.grade; + L0_Iap_Program_array(EEPROM_DATA_ADDR,(U8*)&G,sizeof(G)); } - volume_control.crc == 0xab; - - L0_uart3_sendArray((U8 *)&volume_control,6); + else + { + volume_control.grade = volume_control.grade; + G.volume = volume_control.grade; + L0_Iap_Program_array(EEPROM_DATA_ADDR,(U8*)&G,sizeof(G)); + } + L2_WT2605B_VolumeControl(G.volume); + L2_WT2605B_Broadcast(&audio_volume_down); } diff --git a/source/bsp/bsp_WT2605B.h b/source/bsp/bsp_WT2605B.h index 9d420f2..a21e68e 100644 --- a/source/bsp/bsp_WT2605B.h +++ b/source/bsp/bsp_WT2605B.h @@ -33,10 +33,11 @@ extern TS_SPEECH_AUDIO audio_config_mode; extern TS_SPEECH_AUDIO audio_config_complete; extern TS_SPEECH_AUDIO audio_config_phone; +extern TS_SPEECH_AUDIO audio_volume_up; +extern TS_SPEECH_AUDIO audio_volume_down; + 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; @@ -46,7 +47,8 @@ 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_Broadcast(TS_SPEECH_AUDIO *music); +extern void L2_WT2605B_VolumeControl(U8 grade); extern void L2_WT2605B_VioceUp(); extern void L2_WT2605B_VioceDown(); #endif \ No newline at end of file diff --git a/source/bsp/bsp_oid.c b/source/bsp/bsp_oid.c index f983e80..6d4149e 100644 --- a/source/bsp/bsp_oid.c +++ b/source/bsp/bsp_oid.c @@ -54,7 +54,7 @@ void delay_ms(uint8_t ms) void delay_us(uint8_t us) { - uint16_t i; +// uint16_t i; do{ // i = MAIN_Fosc / 10000000L; // i = 1;///5 10 150u 1---50us diff --git a/source/clib/clib.c b/source/clib/clib.c index a7540e6..896a24d 100644 --- a/source/clib/clib.c +++ b/source/clib/clib.c @@ -299,7 +299,7 @@ int hexToDec(const char *source) } long hex2Dec(U8 *source ,U16 len) { - int i,t,m; + int i,t; long sum=0; for(i=0;i