Browse Source

feature: 1.WIFI网络配置完成!

issu01
Zhangwen 4 months ago
parent
commit
66ece2a061
  1. 14
      .vscode/settings.json
  2. 10
      source/app/app_config.c
  3. 11
      source/app/app_config.h
  4. 2
      source/app/app_data_save.h
  5. 123
      source/app/main.c
  6. 10
      source/app/main.h
  7. 21
      source/app/task_appstatus.c
  8. 31
      source/app/task_keystatus.c
  9. 2
      source/app/task_keystatus.h
  10. 424
      source/app/task_w600 copy.c
  11. 64
      source/app/task_w600.c
  12. 4
      source/app/task_w600.h
  13. 8
      source/bsp/bsp_WT2605B.c
  14. 8
      source/bsp/bsp_config.c
  15. 11
      source/bsp/bsp_config.h
  16. 11
      source/bsp/bsp_ooid.c
  17. 8
      source/bsp/bsp_ooid.h
  18. 20
      source/bsp/bsp_wifi.c
  19. 10
      source/bsp/bsp_wifi.h
  20. 2
      source/msp/UARTX.h

14
.vscode/settings.json

@ -44,6 +44,18 @@
"task_smartconfig.h": "c",
"uartx.h": "c",
"uart4.h": "c",
"limits": "c"
"limits": "c",
"bsp_config_const.h": "c",
"bit.h": "c",
"STC_stc8h3k.H": "cpp",
"at0d0a.h": "c",
"ccmodbus.h": "c",
"bsp_wifi.h": "c",
"task_apptest.h": "c",
"task.h": "c",
"tick.h": "c",
"bsp_ooid.h": "c",
"tpc_x.h": "c",
"typeinfo": "c"
}
}

10
source/app/app_config.c

@ -13,15 +13,18 @@ GlobalRegister R;
void L3_param_init(void)
{
G.head[0] = HEAD0;
G.head[1] = HEAD1;
//U8 i;
G.debug = 1;
//station模式状态
G.st_status = 0; //0:none 1:wifi_ok 2:tcp_connect_ok
//station模式sid
Lc_strcpy(G.st_sid,"YFRS");
Lc_strcpy(G.st_sid,"sdf");
// Lc_strcpy(G.st_sid,"iPhone11");
//station模式pwd
Lc_strcpy(G.st_pwd,"99999999");
Lc_strcpy(G.st_pwd,"dfasgg");
// Lc_strcpy(G.st_pwd,"12345678");
//ap模式状态
G.ap_status = 0;//0: none 1: ap_ok 2:tcp_server_ok
@ -38,6 +41,9 @@ void L3_param_init(void)
wr_buf.buf[i].time = wr_buf.buf[i].x_axis = wr_buf.buf[i].y_axis = 0;
}
#endif
G.tail[0] = TAIL0;
G.tail[1] = TAIL1;
}

11
source/app/app_config.h

@ -16,7 +16,13 @@
#define D_COUNT_WEIGHT(adc) (U32)((adc) / D_ADS1213_GAIN_VAL / R.p.lmd * R.p.weight_max * 1000 / (2 * 0x7FFFFF / 1000 ))
#define D_COUNT_ADC(wInG) (U32)((wInG) * D_ADS1213_GAIN_VAL * R.p.lmd * (2 * 0x7FFFFF / 1000) / R.p.weight_max / 1000)
//定义所使用内存的起始和结尾标志
#define HEAD0 0xa3
#define HEAD1 0xa4
#define TAIL0 0xa5
#define TAIL1 0xa6
#define EEPROM_DATA_ADDR 0x00 //定义一个起始地址为0x00的寄存器
//STEP 1 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Register CONFIG
//寄存器编号从1开始
@ -45,6 +51,8 @@ typedef enum
}APP_STATUS;
typedef struct global_register
{
//RO Register
@ -96,6 +104,9 @@ extern GlobalRegister R;
//STEP 2 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Global Variables CONFIG
typedef struct global_param
{
U8 head[2];
U8 tail[2];
//调试模式
U8 debug;
U8 reset;

2
source/app/app_data_save.h

@ -11,7 +11,7 @@
#define DATA_SAVE_LEN 10 //寄存器需要存放的最大数量为10组
#define EEPROM_DATA_ADDR 0x00 //定义一个起始地址为0x00的寄存器
// #define EEPROM_DATA_ADDR 0x00 //定义一个起始地址为0x00的寄存器
//用来存储重量数据的结构体(数组)
typedef struct

123
source/app/main.c

@ -31,29 +31,28 @@ void L0_BSP_init(void)
L2_led_init();
// 语音模块初始化
L2_WT2605B_init();
// P53口初始化 推挽输出
L0_PW_3V3_INIT();
// 控制3v3输出(OID,WIFI)
L0_PW_3V3_ON();
// WIFI初始化
L2_Wifi_init();
// OID初始化
L2_OID_init();
LED2 = 0;
L0_Oid_Init();
}
void L0_TASK_init(void)
{
//系统状态任务初始化
L3_task_AppStatus_init();
// 系统状态测试任务初始化
// L3_task_AppTest_init();
// 按键状态任务初始化
L3_task_KeyStatus_init();
//w600任务初始化
//WIFI任务初始化
L3_task_W600_flow_init(W600_ST);
L3_task_SmartConfig_init();
// //游戏任务初始化
// L3_task_game_init();
// //寄存器监听任务初始化
@ -66,16 +65,11 @@ void L0_TASK_init(void)
// L3_task_tcp_init();
// L3_task_tcp_control_init();
}
//===============================================
//主函数
//===============================================
void main(void)
{
// int i;
// u8 voice_30[6] = {0x7E,0x04,0xAE,0x1E,0xD0,0xEF};
// u8 voice_13[6] = {0x7E,0x04,0xAE,0x0D,0xBF,0xEF};
//板U初始化
L0_MCU_init();
//BSP层初始化
@ -93,19 +87,13 @@ void main(void)
L0_uart0_sendArray("PEN_V2",6);
L0_uart0_0d0a();
//Lc_delay_ms(3000);
//L0_uart3_sendArray((U8 *)&voice_30,6);
//Lc_delay_ms(1000);
//L0_uart3_sendArray((U8 *)&audio_up,9);
// 上电读出寄存器中的值,放到数组中
// 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();
// }
// 读取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)
{
@ -114,52 +102,26 @@ void main(void)
if(1 == s_nos_tick.t1s_heartbeat)//1s
{
s_nos_tick.t1s_heartbeat = 0;//置0清空
L0_uart0_uc('.');
L0_uart0_sendstr("_s_w600_mode =");
L0_uart0_uchex(_s_task_w600_para.mode);
// 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_AppTest_handler(&_s_task_apptest);
// 按键状态任务
L3_task_keystatus_handler(&_s_task_keystatus);
// // WIFI
// WIFI任务
if (R.app_status != POW_OFF)
{
L3_uart2_wifi_parse();
L2_task_W600_flow_handle(&_s_task_w600_para);
// if (R.app_status == POW_ON)
// {
// L3_uart2_wifi_parse();
// L2_task_W600_flow_handle(&_s_task_w600_para);
// }
// if (R.app_status == WIFI_CONFIG)
// {
// L2_task_W600_flow_handle(&_s_task_w600_para);
// }
#if 0
// 串口3的 接收数据 测试
if(ts_uart[uNum3].r.ok == 1)
{
ts_uart[uNum3].r.ok = 0;
L0_uart0_uc('@');
L0_uart0_sendArray(ts_uart[uNum3].r.buf, D_recv3_max);
}
// if(L3_tick_interval(100L))/////10ms
// {L2_tick_stamp();
// D_print_heartbeat_close();
/// L1_as_readA(0);//读取倾角传感器数据
/// Lc_buf_copy_uc(s_uart1_rec.buf,s_as[0].d,8);
// s_uart1_rec.buf= 传感器数据
/// ff 08 xh xl yh yl zh zl
/// s_uart1_rec.ok =1;
/// L2_sd_save();
#endif
/////////////////////////////////////////
#if 0
if(s_uart0_rec.ok)
{
@ -180,42 +142,31 @@ void main(void)
break;
}
}
// 7E 04 AE 1E XX EF
#endif
// 游戏处理
// L3_task_game_handler(&_s_task_game);
//笔头数据采集
// L3_task_oid_handle(&ts_task_oid);
//WIFI
// L3_uart2_exp_protocol(&s_uart2_at);
// L2_task_W600_flow_handle(&_s_task_w600_para);
//寄存器值监控
// L3_task_reglisten_handle(&s_task_reglisten);
//输出,响应485协议
//L3_task_modbus_handler(&s_uart0_rec);
//语音模块
// L3_task_speech_handle(&ts_speech);
//按键处理
// L3_task_btn_handler();
// L3_task_key_handle(&s_task_key_handle);
//L3_task_modbus_handler2(&s_uart2_rec);
#if 1
//tcp发送
// L3_task_tcp_handle(&ts_tcp);
//tcp master->slaver发送逻辑控制
// L3_task_tcp_control_handle(&ts_tcp_control);
#endif
}
}
//end main
// 上电读出寄存器中的值,放到数组中
// 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();
// }

10
source/app/main.h

@ -68,6 +68,7 @@
#include "../app/task_game.h"
#include "../app/app_data_save.h"
#include "../app/app_config.h"
#include "../app/task_appstatus.h"
#include "../app/task_appTEST.h"
#include "../app/task_keystatus.h"
@ -79,7 +80,14 @@
#include "../bsp/bsp_led.h"
#include "../bsp/bsp_key.h"
#include "../bsp/bsp_WT2605B.h"
#include "../app/app_config.h"
#include "../bsp/bsp_wifi.h"
#include "../bsp/bsp_ooid.h"
#include "../bsp/bsp_oid.h"
#include "../msp/msp_eeprom.h"
#include "../asp/asp_oid.h"
#include "../ctask/tick.h"

21
source/app/task_appstatus.c

@ -19,6 +19,7 @@
#include "../msp/uart0.h"
#include "../bsp/bsp_led.h"
#include "../app/task_w600.h"
#include "../bsp/bsp_wifi.h"
S_TASK_APPSTATUS _s_task_appstatus;
@ -67,20 +68,22 @@ void L3_task_appstatus_handler(S_TASK_APPSTATUS *s)
L2_WT2605B_broadcast(&audio_powerdown);
// Lc_delay_ms(1000);
// L2_WT2605B_PWROFF();
// // OID和WIFI断电
// L0_PW_3V3_OFF();
// OID、WIFI关闭
L2_OID_WIFI_Close();
}
else if (s->status == POW_ON)
{
L0_uart0_uc(R.app_status);
// LED红灯常亮,LED绿灯灭
L2_RED_LED_ON();
// 音频通电后播放开机语音
// L2_WT2605B_PWRON();
// Lc_delay_ms(1000);
L2_WT2605B_broadcast(&audio_poweron);
// // OID和WIFI通电
// L0_PW_3V3_ON();
//wifi任务初始化
L3_task_W600_flow_init(W600_ST);
// OID、WIFI开启
L2_OID_WIFI_Open();
}
else if (s->status == WIFI_CONFIG)
{
@ -91,20 +94,17 @@ void L3_task_appstatus_handler(S_TASK_APPSTATUS *s)
// 配网任务初始化,进入配网
L3_gm35_send_str("+++");
L3_task_W600_flow_init(W600_SC);
}
else if (s->status == WIFI_CONFIG_Phone)
{
L2_WT2605B_broadcast(&audio_config_phone);
}else if (s->status == WIFI_CONFIG_COMPLETE)
}
else if (s->status == WIFI_CONFIG_COMPLETE)
{
L2_WT2605B_broadcast(&audio_config_complete);
// 配网成功,进入STAION模式
L3_task_W600_flow_init(W600_ST);
}
else if (s->status == WIFI_CONNECTED)
{
@ -113,7 +113,6 @@ void L3_task_appstatus_handler(S_TASK_APPSTATUS *s)
// 音频播放
L2_WT2605B_broadcast(&audio_wifi_connected);
}
else if (s->status == TCP_CONNECTED)
{
// LED红灯灭,LED绿灯常亮

31
source/app/task_keystatus.c

@ -24,9 +24,9 @@ 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;
_s_task_keystatus.Key3_handled = 0;
L3_task_s_go(_s_task_keystatus,D_task_init);
}
@ -40,39 +40,40 @@ void L3_task_keystatus_handler(S_TASK_KEYSTATUS *s)
L2_task_go_Tdelay(D_task_KEY_DETECT,D_Tdelay_300ms);
TTSS_Task_step(D_task_KEY_DETECT)
if(L2_ReadKey1() == Key_Down)
if(L2_ReadKey3() == Key_Down)
{
if (s->Key1_Down_Begin_Time == 0)
if (s->Key3_Down_Begin_Time == 0)
{
s->Key1_Down_Begin_Time = D_sys_now;
s->Key3_Down_Begin_Time = D_sys_now;
}
else
{
U32 diff = D_sys_now -s->Key1_Down_Begin_Time;
U32 diff = D_sys_now -s->Key3_Down_Begin_Time;
// L0_uart0_ulhex(diff);
if (diff >= LongKey_PWR_MSeconds/JIFFIES && s->Key1_handled == 0)
if (diff >= LongKey_PWR_MSeconds/JIFFIES && s->Key3_handled == 0)
{
if (R.app_status == POW_OFF)
{
R.app_status = POW_ON;
s->Key1_Down_Begin_Time = 0;
s->Key1_handled = 1;
s->Key3_Down_Begin_Time = 0;
s->Key3_handled = 1;
}
else
{
R.app_status = POW_OFF;
s->Key1_Down_Begin_Time = 0;
s->Key1_handled = 1;
s->Key3_Down_Begin_Time = 0;
s->Key3_handled = 1;
}
}
else if (diff >= LongKey_WIFICONF_MSeconds/JIFFIES && s->Key1_handled == 0)
else if (diff >= LongKey_WIFICONF_MSeconds/JIFFIES && s->Key3_handled == 0)
{
if (L2_ReadKey3() == Key_Down)
if (L2_ReadKey1() == Key_Down)
{
if (R.app_status != POW_OFF)
{
R.app_status = WIFI_CONFIG;
s->Key1_handled = 1;
s->Key3_handled = 1;
}
}
}
@ -80,8 +81,8 @@ void L3_task_keystatus_handler(S_TASK_KEYSTATUS *s)
}
else
{
s->Key1_Down_Begin_Time = 0;
s->Key1_handled = 0;
s->Key3_Down_Begin_Time = 0;
s->Key3_handled = 0;
}
L2_task_go_Tdelay(D_task_KEY_DETECT,D_Tdelay_300ms);
TTSS_Task_end();

2
source/app/task_keystatus.h

@ -25,9 +25,9 @@ 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;
U8 Key3_handled;
}S_TASK_KEYSTATUS;
extern S_TASK_KEYSTATUS _s_task_keystatus;

424
source/app/task_w600 copy.c

@ -450,8 +450,7 @@ void L2_task_W600_flow_handle(struct _s_task_W600_Para *s)
else if(1 == s->serve_ok) //等待
{
s->send = 0;
// R.app_status = TCP_CONNECTED;
L0_uart0_sendstr("TCP connected\r\n");
R.app_status = TCP_CONNECTED;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMODE1,D_Tdelay_1s);
}
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
@ -505,190 +504,241 @@ void L2_task_W600_flow_handle(struct _s_task_W600_Para *s)
L2_task_go(TTSS_TASK_GM35_FLOW_ST_DATA);
// else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
// {//超时重发(超时,设置单连接模式)
// s->send = 0;
// L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_CIPMUX0,D_Tdelay_300ms);
// }
// TTSS_Task_step(TTSS_TASK_GM35_FLOW_AP_CIPMUX0)
// if(s->send == 0)
// {//发送
// L3_gm35_send_str(AT_INS_ST_CIPMUX0);
// s->ins_ok = 0;
// s->st_wifi_ok = 0;
// s->ins_stmp = s_nos_tick.t_1s;
// s->send = 1;
// }
// else if(1 == s->ins_ok) //等待
// {
// s->send = 0;
// L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMODE0,D_Tdelay_300ms);
// }
// else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
// {//超时重发
// s->send = 0;
// }
// TTSS_Task_step(TTSS_TASK_GM35_FLOW_AP)
// if(s->send == 0)
// {//发送
// L3_gm35_send_str(AT_INS_AP);
// s->ins_ok = 0;
// s->ins_stmp = s_nos_tick.t_1s;
// s->send = 1;
// }
// else if(1 == s->ins_ok) //等待
// {
// s->send = 0;
// L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_WIFI,D_Tdelay_300ms);
// }
// else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
// {//超时重发
// s->send = 0;
// }
// TTSS_Task_step(TTSS_TASK_GM35_FLOW_AP_WIFI)
// if(s->send == 0)
// {//发送
// L3_gm35_send_str(AT_INS_AP_WIFI);
// s->ins_ok = 0;
// s->st_error = 0;
// s->ins_stmp = s_nos_tick.t_1s;
// s->send = 1;
// }
// else if((1 == s->ins_ok)||(1 == s->st_error)) //等待
// {
// s->send = 0;
// L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_CIPMUX1,D_Tdelay_300ms);
// }
// else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
// {//超时重发
// s->send = 0;
// }
// TTSS_Task_step(TTSS_TASK_GM35_FLOW_AP_CIPMUX1)
// if(s->send == 0)
// {//发送
// L3_gm35_send_str(AT_INS_AP_CIPMUX1);
// s->ins_ok = 0;
// s->ins_stmp = s_nos_tick.t_1s;
// s->send = 1;
// }
// else if(1 == s->ins_ok) //等待
// {
// s->send = 0;
// L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_SERVER,D_Tdelay_300ms);
// }
// else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
// {//超时重发
// s->send = 0;
// }
// TTSS_Task_step(TTSS_TASK_GM35_FLOW_AP_SERVER)
// if(s->send == 0)
// {//发送
// L3_gm35_send_str(AT_INS_AP_SERVER);
// s->ins_ok = 0;
// s->ins_stmp = s_nos_tick.t_1s;
// s->send = 1;
// }
// else if(1 == s->ins_ok) //等待
// {
// s->send = 0;
// L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_TCP_TIME,D_Tdelay_300ms);
// }
// else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
// {//超时重发
// s->send = 0;
// }
// TTSS_Task_step(TTSS_TASK_GM35_FLOW_TCP_TIME)
// if(s->send == 0)
// {//发送
// L3_gm35_send_str(AT_INS_AP_TCP_TIME);
// // LED2 = 0;
// s->ins_ok = 0;
// s->ins_stmp = s_nos_tick.t_1s;
// s->send = 1;
// }
// else if(1 == s->ins_ok) //等待
// {
// s->send = 0;
// s->ap_tcp_ok = 0;
// L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_TCP_CONN_WAIT,D_Tdelay_300ms);
// }
// else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
// {//超时重发
// s->send = 0;
// }
// TTSS_Task_step(TTSS_TASK_GM35_FLOW_AP_TCP_CONN_WAIT) //等待TCP连接
// if(1 == s->ap_tcp_ok)
// {
// s->ap_conn_ok = 0;
// s->ap_tcp_ok = 0;
// s->ap_rec_ok = 0;
// s->ins_stmp = s_nos_tick.t_1s;
// L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_WIFI_DATA_STA_WAIT,0);
// }
// TTSS_Task_step(TTSS_TASK_GM35_FLOW_AP_WIFI_DATA_STA_WAIT)
// if(1 == s->ap_rec_ok)//收到正确的数据才会ok=1
// {//ok回复#ok$\r\n
// s->ap_rec_ok = 0;
// s->rev = 1;
// s->ins_stmp = s_nos_tick.t_1s;
// //L0_uart0_sendstr("ap config ok");
// //L3_gm35_send_str(AT_INS_AP_SEND);//进入发送模式
// //L2_task_go(TTSS_TASK_MODE_TRAN);
// }
// else if(1 == s->ap_conn_ok)
// {
// s->ap_conn_ok = 0;
// s->ap_tcp_ok = 0;
// L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_CIPMUX1,D_Tdelay_300ms);
// }
// else if((s_nos_tick.t_1s - s->ins_stmp > 3) && (s->rev == 1))
// {//超时重发
// s->ap_data_ok = 0;
// s->rev= 0;
// L3_gm35_send_str(AT_INS_AP_SEND);
// L2_task_go_Tdelay(TTSS_TASK_MODE_TRAN,D_Tdelay_100ms);
// }
// TTSS_Task_step(TTSS_TASK_MODE_TRAN)
// if(s->send == 0)
// {//发送
// L3_gm35_send_str("#OK$\r\n");
// // LED2 = 1;
// s->ap_rec_ok = 0;
// s->ins_ok = 0;
// s->send = 1;
// s->ins_stmp = s_nos_tick.t_1s;
// }
// else if(1 == s->ap_data_ok) //等待//此处进入ins_ok,不进入send_ok,因为之前有一个no change OK,在进入AP关闭服务器那里
// {
// s->send = 0;
// s->ap_tcp_ok = 0;
// L2_task_go_Tdelay(TTSS_TASK_MODE_SERVER_CLOSE,D_Tdelay_100ms);
// }
// TTSS_Task_step(TTSS_TASK_MODE_SERVER_CLOSE)
// if(s->send == 0)
// {//发送
// L3_gm35_send_str(AT_INS_AP_SERVER_CLOSE);
// s->ins_ok = 0;
// s->ins_stmp = s_nos_tick.t_1s;
// s->send = 1;
// }
// else if(1 == s->ins_ok) //等待
// {
// s->send = 0;
// // LED1 = 1;
// // LED2 = 1;
// L3_task_W600_flow_init(W600_ST);
// }
// else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
// {//超时重发
// s->send = 0;
// }
/********************s->mode = W600_AP****************************** */
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_SERVE)
if(s->send == 0)
{//发送
L3_gm35_send_str(AT_INS_AP_SERVER_CLOSE); //关闭服务器
s->ins_ok = 0;
s->ins_stmp = s_nos_tick.t_1s;
s->send = 1;
}
else if(s->st_error)
{
s->send = 0;
s->st_error = 0;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMODE0,D_Tdelay_300ms);
}
else if((s->serve_ok == 1)|| (s->ins_ok == 1)) //等待
{
s->send = 0;
s->serve_ok = 0;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMODE0,D_Tdelay_300ms);
}
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
{//超时重发
s->send = 0;
}
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_CIPMODE0)
if(s->send == 0)
{//发送
L3_gm35_send_str(AT_INS_ST_CIPMODE0);
s->ins_ok = 0;
s->ins_stmp = s_nos_tick.t_1s;
s->send = 1;
}
else if(1 == s->ins_ok) //等待(等待过程中,进入AP模式)
{
s->send = 0;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP,D_Tdelay_300ms);
}
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
{//超时重发(超时,设置单连接模式)
s->send = 0;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_CIPMUX0,D_Tdelay_300ms);
}
TTSS_Task_step(TTSS_TASK_GM35_FLOW_AP_CIPMUX0)
if(s->send == 0)
{//发送
L3_gm35_send_str(AT_INS_ST_CIPMUX0);
s->ins_ok = 0;
s->st_wifi_ok = 0;
s->ins_stmp = s_nos_tick.t_1s;
s->send = 1;
}
else if(1 == s->ins_ok) //等待
{
s->send = 0;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMODE0,D_Tdelay_300ms);
}
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
{//超时重发
s->send = 0;
}
TTSS_Task_step(TTSS_TASK_GM35_FLOW_AP)
if(s->send == 0)
{//发送
L3_gm35_send_str(AT_INS_AP);
s->ins_ok = 0;
s->ins_stmp = s_nos_tick.t_1s;
s->send = 1;
}
else if(1 == s->ins_ok) //等待
{
s->send = 0;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_WIFI,D_Tdelay_300ms);
}
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
{//超时重发
s->send = 0;
}
TTSS_Task_step(TTSS_TASK_GM35_FLOW_AP_WIFI)
if(s->send == 0)
{//发送
L3_gm35_send_str(AT_INS_AP_WIFI);
s->ins_ok = 0;
s->st_error = 0;
s->ins_stmp = s_nos_tick.t_1s;
s->send = 1;
}
else if((1 == s->ins_ok)||(1 == s->st_error)) //等待
{
s->send = 0;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_CIPMUX1,D_Tdelay_300ms);
}
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
{//超时重发
s->send = 0;
}
TTSS_Task_step(TTSS_TASK_GM35_FLOW_AP_CIPMUX1)
if(s->send == 0)
{//发送
L3_gm35_send_str(AT_INS_AP_CIPMUX1);
s->ins_ok = 0;
s->ins_stmp = s_nos_tick.t_1s;
s->send = 1;
}
else if(1 == s->ins_ok) //等待
{
s->send = 0;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_SERVER,D_Tdelay_300ms);
}
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
{//超时重发
s->send = 0;
}
TTSS_Task_step(TTSS_TASK_GM35_FLOW_AP_SERVER)
if(s->send == 0)
{//发送
L3_gm35_send_str(AT_INS_AP_SERVER);
s->ins_ok = 0;
s->ins_stmp = s_nos_tick.t_1s;
s->send = 1;
}
else if(1 == s->ins_ok) //等待
{
s->send = 0;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_TCP_TIME,D_Tdelay_300ms);
}
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
{//超时重发
s->send = 0;
}
TTSS_Task_step(TTSS_TASK_GM35_FLOW_TCP_TIME)
if(s->send == 0)
{//发送
L3_gm35_send_str(AT_INS_AP_TCP_TIME);
// LED2 = 0;
s->ins_ok = 0;
s->ins_stmp = s_nos_tick.t_1s;
s->send = 1;
}
else if(1 == s->ins_ok) //等待
{
s->send = 0;
s->ap_tcp_ok = 0;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_TCP_CONN_WAIT,D_Tdelay_300ms);
}
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
{//超时重发
s->send = 0;
}
TTSS_Task_step(TTSS_TASK_GM35_FLOW_AP_TCP_CONN_WAIT) //等待TCP连接
if(1 == s->ap_tcp_ok)
{
s->ap_conn_ok = 0;
s->ap_tcp_ok = 0;
s->ap_rec_ok = 0;
s->ins_stmp = s_nos_tick.t_1s;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_WIFI_DATA_STA_WAIT,0);
}
TTSS_Task_step(TTSS_TASK_GM35_FLOW_AP_WIFI_DATA_STA_WAIT)
if(1 == s->ap_rec_ok)//收到正确的数据才会ok=1
{//ok回复#ok$\r\n
s->ap_rec_ok = 0;
s->rev = 1;
s->ins_stmp = s_nos_tick.t_1s;
//L0_uart0_sendstr("ap config ok");
//L3_gm35_send_str(AT_INS_AP_SEND);//进入发送模式
//L2_task_go(TTSS_TASK_MODE_TRAN);
}
else if(1 == s->ap_conn_ok)
{
s->ap_conn_ok = 0;
s->ap_tcp_ok = 0;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_CIPMUX1,D_Tdelay_300ms);
}
else if((s_nos_tick.t_1s - s->ins_stmp > 3) && (s->rev == 1))
{//超时重发
s->ap_data_ok = 0;
s->rev= 0;
L3_gm35_send_str(AT_INS_AP_SEND);
L2_task_go_Tdelay(TTSS_TASK_MODE_TRAN,D_Tdelay_100ms);
}
TTSS_Task_step(TTSS_TASK_MODE_TRAN)
if(s->send == 0)
{//发送
L3_gm35_send_str("#OK$\r\n");
// LED2 = 1;
s->ap_rec_ok = 0;
s->ins_ok = 0;
s->send = 1;
s->ins_stmp = s_nos_tick.t_1s;
}
else if(1 == s->ap_data_ok) //等待//此处进入ins_ok,不进入send_ok,因为之前有一个no change OK,在进入AP关闭服务器那里
{
s->send = 0;
s->ap_tcp_ok = 0;
L2_task_go_Tdelay(TTSS_TASK_MODE_SERVER_CLOSE,D_Tdelay_100ms);
}
TTSS_Task_step(TTSS_TASK_MODE_SERVER_CLOSE)
if(s->send == 0)
{//发送
L3_gm35_send_str(AT_INS_AP_SERVER_CLOSE);
s->ins_ok = 0;
s->ins_stmp = s_nos_tick.t_1s;
s->send = 1;
}
else if(1 == s->ins_ok) //等待
{
s->send = 0;
// LED1 = 1;
// LED2 = 1;
L3_task_W600_flow_init(W600_ST);
}
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
{//超时重发
s->send = 0;
}
TTSS_Task_end();
}

64
source/app/task_w600.c

@ -41,7 +41,7 @@ char *GET_WIFI_INS()
return wifi_ins;
}
U8 wifi_rev_buf[64], wifi_tmp[64];
U8 wifi_rev_buf[128], wifi_tmp[64];
U8 tmp_num = 0;
void L3_uart2_wifi_parse(void)
{
@ -70,7 +70,11 @@ void L3_uart2_wifi_parse(void)
L0_uart0_sendstr(wifi_tmp);
L0_uart0_0d0a();
if(Lc_strcmp(wifi_tmp,"OK") == 0)
if(Lc_strcmp(wifi_tmp,"busy p...") == 0)
{
_s_task_w600_para.busy = 1;
}
else if(Lc_strcmp(wifi_tmp,"OK") == 0)
{
_s_task_w600_para.ins_ok = 1;
}
@ -86,15 +90,19 @@ void L3_uart2_wifi_parse(void)
{
_s_task_w600_para.smartc_ok = 1;
}
// else if(Lc_strcmp(wifi_tmp,"ALREADY CONNECTED") == 0 )
// {
// _s_task_w600_para.serve_ok = 1;
// }
else if(Lc_strcmp(wifi_tmp,">") == 0)
{
_s_task_w600_para.st_cip_ok = 1;
}
else if(Lc_strStartsWith(wifi_tmp,"ssid:"))
{
Lc_strcpy(G.st_sid,wifi_tmp + 5);
}
else if(Lc_strStartsWith(wifi_tmp,"password:"))
{
Lc_strcpy(G.st_pwd,wifi_tmp + 9);
L0_Iap_Program_array(EEPROM_DATA_ADDR,(U8*)&G,sizeof(G));
}
tmp_num = 0;
}
}
@ -157,23 +165,22 @@ void L3_task_W600_flow_init(U8 mode)
void L2_task_W600_flow_handle(struct _s_task_W600_Para *s)
{
TTSS_Task_init()
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ATEQV,D_Tdelay_5s);//上电等待1s
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ATEQV,D_Tdelay_5s);//上电等待5s
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ATEQV)
if(s->send == 0)
{//发送
L0_uart0_uc('#');
L3_gm35_send_str(AT_INS_ATE0); //"ATE0\r\n" //模块查询+关闭回显
s->ins_ok = 0;
s->ins_stmp = s_nos_tick.t_1s;
s->send = 1;
s->busy = 0;
}
else if(s->ins_ok == 1) //等待
else if(s->busy == 0 && s->ins_ok == 1) //等待
{
s->send = 0;
s->serve_ok = 0;
L0_uart0_uc(')');
L2_task_go_Tdelay(s->mode == W600_ST ? TTSS_TASK_GM35_FLOW_ST
:TTSS_TASK_GM35_FLOW_ST_CIPOFF,D_Tdelay_1s);
:TTSS_TASK_GM35_FLOW_ST_SMARTCONFIG,D_Tdelay_1s);
}
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
{//超时重发
@ -186,8 +193,9 @@ void L2_task_W600_flow_handle(struct _s_task_W600_Para *s)
s->ins_ok = 0;
s->ins_stmp = s_nos_tick.t_1s;
s->send = 1;
s->busy = 0;
}
else if(s->ins_ok == 1) //等待
else if(s->busy == 0 && s->ins_ok == 1) //等待
{
s->send = 0;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_WIFI,D_Tdelay_1s);
@ -205,8 +213,9 @@ void L2_task_W600_flow_handle(struct _s_task_W600_Para *s)
s->st_wifi_ok = 0;
s->ins_stmp = s_nos_tick.t_1s;
s->send = 1;
s->busy = 0;
}
else if(1 == s->st_wifi_ok)
else if(s->busy == 0 && 1 == s->st_wifi_ok)
{
s->send = 0;
R.app_status = WIFI_CONNECTED; //wifi连接成功
@ -224,8 +233,9 @@ void L2_task_W600_flow_handle(struct _s_task_W600_Para *s)
s->st_wifi_ok = 0;
s->ins_stmp = s_nos_tick.t_1s;
s->send = 1;
s->busy = 0;
}
else if(1 == s->ins_ok) //等待
else if(s->busy == 0 && 1 == s->ins_ok) //等待
{
s->send = 0;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_TCP,D_Tdelay_1s);
@ -243,8 +253,9 @@ void L2_task_W600_flow_handle(struct _s_task_W600_Para *s)
s->serve_ok = 0;
s->ins_stmp = s_nos_tick.t_1s;
s->send = 1;
s->busy = 0;
}
else if(1 == s->serve_ok) //等待
else if(s->busy == 0 && 1 == s->serve_ok) //等待
{
s->send = 0;
R.app_status = TCP_CONNECTED;
@ -261,8 +272,9 @@ void L2_task_W600_flow_handle(struct _s_task_W600_Para *s)
s->ins_ok = 0;
s->ins_stmp = s_nos_tick.t_1s;
s->send = 1;
s->busy = 0;
}
else if(1 == s->ins_ok) //等待
else if(s->busy == 0 && 1 == s->ins_ok) //等待
{
s->send = 0;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPSEND,D_Tdelay_1s);
@ -280,8 +292,10 @@ void L2_task_W600_flow_handle(struct _s_task_W600_Para *s)
s->st_error = 0;
s->ins_stmp = s_nos_tick.t_1s;
s->send = 1;
s->busy = 0;
}
else if(s->st_cip_ok == 1)
else if(s->busy == 0 && s->st_cip_ok == 1)
{
s->send = 0;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_DATA,D_Tdelay_1s);
@ -293,15 +307,16 @@ void L2_task_W600_flow_handle(struct _s_task_W600_Para *s)
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_DATA)
L2_task_go(TTSS_TASK_GM35_FLOW_ST_DATA);
/********************s->mode = W600_SC(按键进入)****************************** */
/*******************************************s->mode = W600_SC(按键进入)********************************************** */
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ST_CIPOFF)
if(s->send == 0)
{//发送
L0_uart0_uc('~');
L3_gm35_send_str("+++"); //关闭CIP
s->ins_ok = 0;
s->ins_stmp = s_nos_tick.t_1s;
s->send = 0;
s->busy = 0;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ATE0QV,D_Tdelay_1s);
}
// else if(1 == s->ins_ok)
@ -321,8 +336,9 @@ void L2_task_W600_flow_handle(struct _s_task_W600_Para *s)
s->ins_ok = 0;
s->ins_stmp = s_nos_tick.t_1s;
s->send = 1;
s->busy = 0;
}
else if(s->ins_ok == 1) //等待
else if(s->busy == 0 && s->ins_ok == 1) //等待
{
s->send = 0;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_SMARTCONFIG,D_Tdelay_1s);
@ -338,8 +354,9 @@ void L2_task_W600_flow_handle(struct _s_task_W600_Para *s)
s->ins_ok = 0;
s->ins_stmp = s_nos_tick.t_1s;
s->send = 1;
s->busy = 0;
}
else if(1 == s->ins_ok)
else if(s->busy == 0 && 1 == s->ins_ok)
{
s->send = 0;
s->smartc_ok = 0;
@ -363,8 +380,9 @@ void L2_task_W600_flow_handle(struct _s_task_W600_Para *s)
s->ins_ok = 0;
s->ins_stmp = s_nos_tick.t_1s;
s->send = 1;
s->busy = 0;
}
else if(1 == s->ins_ok)
else if(s->busy == 0 && 1 == s->ins_ok)
{
s->send = 1;
R.app_status = WIFI_CONFIG_COMPLETE;

4
source/app/task_w600.h

@ -19,9 +19,12 @@
#include "../ctask/task.h"
#include "../tpc/at0d0a.h"
#include "../tpc/ccmodbus.h"
#include "../msp/msp_eeprom.h"
////<<<<<<<<<<<<<<<<<<< GM35模块 AT操作指令 <<<<<<<<<<<<<<<<<<<<<<<<
#define AT_INS_ATE1 "ATE1\r\n" //模块查询+打开回显
#define AT_INS_ATE0 "ATE0\r\n" //模块查询+关闭回显 1-1
#define AT_INS_ST "AT+CWMODE=1\r\n" //进入station模式 1-2
// #define AT_INS_ST_WIFI "AT+CWJAP_DEF=\"ccsens\",\"ccsens123\"\r\n" // 1-3
@ -54,6 +57,7 @@ struct _s_task_W600_Para
TS_task task;
vU8 send;
vU8 busy;
vU8 ins_ok;
vU8 st_wifi_ok;
vU8 st_conn_ok;

8
source/bsp/bsp_WT2605B.c

@ -29,6 +29,7 @@ void L2_WT2605B_init()
//电源控制引脚
D_HighI_P0(BITN5);
L2_WT2605B_PWRON();
}
void L2_WT2605B_PWRON()
@ -45,6 +46,13 @@ void L2_WT2605B_Broadcast(TS_SPEECH_AUDIO *music)
L0_uart3_sendArray((U8 *)music,9);
}
void L2_WT2605B_VioceControl(void)
{
L2_WT2605B_Broadcast(&audio_zmg_again);
L2_WT2605B_VioceUp();
L2_WT2605B_Broadcast(&audio_zmg_success);
}
void L2_WT2605B_VioceUp(void)
{
if (volume_control.grade <= 0x1E)

8
source/bsp/bsp_config.c

@ -62,16 +62,12 @@ void L0_board_config(void)
D_stdIO_P5(BITN5);
//IO
D_stdIO_P1(BITN0);
D_stdIO_P1(BITN1);
D_stdIO_P1(BITN2);
D_stdIO_P1(BITN6);
// D_stdIO_P3(BITN2);
D_stdIO_P3(BITN4);
D_stdIO_P3(BITN5);
D_stdIO_P3(BITN6);
D_stdIO_P3(BITN7);
@ -80,7 +76,7 @@ void L0_board_config(void)
D_stdIO_P0(BITN2);
D_HighI_P3(BITN4);
D_HighI_P5(BITN0);
D_HighI_P0(BITN5);
P05 = 0;

11
source/bsp/bsp_config.h

@ -164,21 +164,10 @@
#define LED3 P02 //D4
//#define LED4 P26 //D4
//笔头
#define SCK P34
#define SDIO P50
// 3V3输出控制(WIFI,笔头供电)
#define L0_PW_3V3_INIT() D_HighI_P5(BITN3)
#define L0_PW_3V3_ON() D_P53_OFF()
#define L0_PW_3V3_OFF() D_P53_ON()
//EEP存储地址定义
#define D_EEP_SECTOR_SIZE 0x200 //每个扇区0x200==512bytes
#define D_EEP_SECTOR_BLOCK_SIZE 0x40 //扇区中每个数据块0x40==64bytes,可选值[32,64,128]等

11
source/bsp/bsp_ooid.c

@ -0,0 +1,11 @@
#include "../bsp/bsp_ooid.h"
#include "../bsp/bsp_wifi.h"
void L2_OID_init()
{
D_stdIO_P3(BITN4);
D_HighI_P5(BITN0);
L2_OID_WIFI_Open();
}

8
source/bsp/bsp_ooid.h

@ -0,0 +1,8 @@
#ifndef BSP_OOID_H
#define BSP_OOID_H
#include "bsp_config.h"
extern void L2_OID_init();
#endif

20
source/bsp/bsp_wifi.c

@ -0,0 +1,20 @@
#include "../bsp/bsp_wifi.h"
void L2_Wifi_init()
{
D_stdIO_P1(BITN0);
D_stdIO_P1(BITN1);
D_stdIO_P5(BITN3);
L2_OID_WIFI_Open();
}
void L2_OID_WIFI_Open()
{
D_P53_OFF();
}
void L2_OID_WIFI_Close()
{
D_P53_ON();
}

10
source/bsp/bsp_wifi.h

@ -0,0 +1,10 @@
#ifndef BSP_WIFI_H
#define BSP_WIFI_H
#include "bsp_config.h"
extern void L2_Wifi_init();
extern void L2_OID_WIFI_Close();
extern void L2_OID_WIFI_Open();
#endif

2
source/msp/UARTX.h

@ -21,7 +21,7 @@
/////可以依据实际使用独立定制
#define D_recv1_max 32
#define D_recv2_max 32
#define D_recv2_max 128
#define D_recv3_max 32
#define D_recv4_max 32

Loading…
Cancel
Save