Browse Source

feature: 1.新建DDB仓库;2.可以输出OID码

master
Zhangwen 6 months ago
parent
commit
a5576d8e81
  1. 11
      .vscode/settings.json
  2. 51
      keilp/cc_as_stc02_ps5ws.uvprojx
  3. BIN
      si4/ps5ws.si4project/soft_ps5ws.sip_sym
  4. BIN
      si4/ps5ws.si4project/soft_ps5ws.sip_xab
  5. BIN
      si4/ps5ws.si4project/soft_ps5ws.sip_xad
  6. BIN
      si4/ps5ws.si4project/soft_ps5ws.sip_xc
  7. BIN
      si4/ps5ws.si4project/soft_ps5ws.sip_xf
  8. BIN
      si4/ps5ws.si4project/soft_ps5ws.sip_xm
  9. BIN
      si4/ps5ws.si4project/soft_ps5ws.sip_xr
  10. BIN
      si4/ps5ws.si4project/soft_ps5ws.sip_xsb
  11. BIN
      si4/ps5ws.si4project/soft_ps5ws.sip_xsd
  12. BIN
      si4/ps5ws.si4project/soft_ps5ws.siproj
  13. 14
      source/app/app_config.c
  14. 10
      source/app/app_config.h
  15. 133
      source/app/app_task_speech.c
  16. 38
      source/app/app_task_speech.h
  17. 86
      source/app/app_task_tcp.c
  18. 2
      source/app/app_task_tcp_control.c
  19. 68
      source/app/main.c
  20. 3
      source/app/main.h
  21. 138
      source/app/task_key.c
  22. 4
      source/app/task_key.h
  23. 153
      source/app/task_w600.c
  24. 15
      source/app/task_w600.h
  25. 24
      source/asp/asp_oid.c
  26. 15
      source/bsp/bsp_config.c
  27. 29
      source/bsp/bsp_config.h
  28. 1
      source/bsp/bsp_config_const.h
  29. 61
      source/bsp/bsp_oid.c
  30. 92
      source/clib/clib.c
  31. 7
      source/clib/clib.h
  32. 5
      source/msp/msp_uart0.C
  33. 2
      source/msp/msp_uart2.C
  34. 71
      source/msp/msp_uart3.c
  35. 2
      source/msp/msp_uart_x.h
  36. 184
      source/msp/nouse/msp_uart3.c
  37. 93
      source/msp/nouse/msp_uart3.h
  38. 2
      source/tpc/ccmodbus.h
  39. 3
      source/tpc/modbus.h
  40. 2
      source/tpc/tpc_x.h

11
.vscode/settings.json

@ -0,0 +1,11 @@
{
"files.associations": {
"UART0.C": "cpp",
"msp_uart0.C": "cpp",
"msp_uart2.C": "cpp",
"asp_oid.h": "c",
"msp_uart2.h": "c",
"task_w600.h": "c",
"UART2.C": "cpp"
}
}

51
keilp/cc_as_stc02_ps5ws.uvprojx

@ -123,6 +123,47 @@
<HexOffset>0</HexOffset>
<Oh166RecLen>16</Oh166RecLen>
</OPTHX>
<Simulator>
<UseSimulator>1</UseSimulator>
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
<RunToMain>1</RunToMain>
<RestoreBreakpoints>1</RestoreBreakpoints>
<RestoreWatchpoints>1</RestoreWatchpoints>
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
<RestoreFunctions>1</RestoreFunctions>
<RestoreToolbox>1</RestoreToolbox>
<LimitSpeedToRealTime>0</LimitSpeedToRealTime>
<RestoreSysVw>1</RestoreSysVw>
</Simulator>
<Target>
<UseTarget>0</UseTarget>
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
<RunToMain>0</RunToMain>
<RestoreBreakpoints>1</RestoreBreakpoints>
<RestoreWatchpoints>1</RestoreWatchpoints>
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
<RestoreFunctions>0</RestoreFunctions>
<RestoreToolbox>1</RestoreToolbox>
<RestoreTracepoints>1</RestoreTracepoints>
<RestoreSysVw>1</RestoreSysVw>
</Target>
<RunDebugAfterBuild>0</RunDebugAfterBuild>
<TargetSelection>-1</TargetSelection>
<SimDlls>
<CpuDll></CpuDll>
<CpuDllArguments></CpuDllArguments>
<PeripheralDll></PeripheralDll>
<PeripheralDllArguments></PeripheralDllArguments>
<InitializationFile></InitializationFile>
</SimDlls>
<TargetDlls>
<CpuDll></CpuDll>
<CpuDllArguments></CpuDllArguments>
<PeripheralDll></PeripheralDll>
<PeripheralDllArguments></PeripheralDllArguments>
<InitializationFile></InitializationFile>
<Driver></Driver>
</TargetDlls>
</DebugOption>
<Utilities>
<Flash1>
@ -362,6 +403,11 @@
<FileType>1</FileType>
<FilePath>..\source\app\app_task_tcp.c</FilePath>
</File>
<File>
<FileName>app_task_speech.c</FileName>
<FileType>1</FileType>
<FilePath>..\source\app\app_task_speech.c</FilePath>
</File>
</Files>
</Group>
<Group>
@ -425,7 +471,7 @@
<File>
<FileName>msp_uart3.c</FileName>
<FileType>1</FileType>
<FilePath>..\source\msp\nouse\msp_uart3.c</FilePath>
<FilePath>..\source\msp\msp_uart3.c</FilePath>
</File>
</Files>
</Group>
@ -494,6 +540,9 @@
</File>
</Files>
</Group>
<Group>
<GroupName>New Group</GroupName>
</Group>
</Groups>
</Target>
</Targets>

BIN
si4/ps5ws.si4project/soft_ps5ws.sip_sym

Binary file not shown.

BIN
si4/ps5ws.si4project/soft_ps5ws.sip_xab

Binary file not shown.

BIN
si4/ps5ws.si4project/soft_ps5ws.sip_xad

Binary file not shown.

BIN
si4/ps5ws.si4project/soft_ps5ws.sip_xc

Binary file not shown.

BIN
si4/ps5ws.si4project/soft_ps5ws.sip_xf

Binary file not shown.

BIN
si4/ps5ws.si4project/soft_ps5ws.sip_xm

Binary file not shown.

BIN
si4/ps5ws.si4project/soft_ps5ws.sip_xr

Binary file not shown.

BIN
si4/ps5ws.si4project/soft_ps5ws.sip_xsb

Binary file not shown.

BIN
si4/ps5ws.si4project/soft_ps5ws.sip_xsd

Binary file not shown.

BIN
si4/ps5ws.si4project/soft_ps5ws.siproj

Binary file not shown.

14
source/app/app_config.c

@ -8,7 +8,7 @@
GlobalParam G;
GlobalRegister R;
WR_Buf wr_buf;
//WR_Buf wr_buf;
void L3_param_init(void)
{
@ -108,7 +108,7 @@ void L3_reg_reset(void)
R.pen_net_sta = 0;
R.pen_ele_sta = 0;
R.question_sta = 0;
R.spee_order = 0;
//R.oid3_order = 0;
//R.pack_order = 0;
//R.frame_order = 0;
@ -138,21 +138,13 @@ void L3_reg_reset(void)
G.ccmd_slaver_info[1].mask = 0;
G.ccmd_slaver_info[1].extra_num = 0;
//普通码
G.ccmd_slaver_info[3].slaver = SLAVER_TCP_SERVER_ID;
G.ccmd_slaver_info[3].oper = MODBUS_OPER_WRITE_M;
G.ccmd_slaver_info[3].reg = 0x05;
G.ccmd_slaver_info[3].regnum = 0x00;//基础数量,程序每次应动态添加点数
G.ccmd_slaver_info[3].bytes = 0;
G.ccmd_slaver_info[3].buf = (U8*)&R.oid3_order;
G.ccmd_slaver_info[3].mask = 0;
G.ccmd_slaver_info[3].extra_num = 2;
G.modbusstmp = 0;
G.authed = 0;
G.flowStartVal = 1;
G.pen_up = 0;
G.datapkg = 0;
G.pen_t = 1;
}

10
source/app/app_config.h

@ -7,7 +7,7 @@
#include "../tpc/modbus.h"
//#include "../asp/asp_oid.h"
#define SERVER_ID 0x01
#define APP_VERSION 0x10
#define SLAVER_TCP_SERVER_ID 0x14
#define APP_VERSION_HEX 0x11 //高4位主版本,低4位次版本
@ -103,6 +103,7 @@ typedef struct global_param
extern GlobalParam G;
//STEP 2 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<Global Variables CONFIG End
#if 0
typedef struct
{
vU8 rIndex;//读标志
@ -116,14 +117,15 @@ typedef struct
//PenPoint buf[POINT_LEN+6];//8*48*2
}WR_Buf;
extern WR_Buf wr_buf;
#endif
extern void L3_param_init(void);
extern void L3_reg_2_iap(void);
extern void L3_iap_2_reg(void);
extern void L3_reg_reset(void);
extern void L3_reg_init(void);
extern void Lc_buf_full(WR_Buf *p);
extern U16 Lc_write_cyc_buf(PenPoint *wbuf ,WR_Buf *wp ,U16 wlen);
extern U16 Lc_read_cyc_buf(PenPoint *rbuf ,WR_Buf *rp ,U16 rlen);
//extern void Lc_buf_full(WR_Buf *p);
//extern U16 Lc_write_cyc_buf(PenPoint *wbuf ,WR_Buf *wp ,U16 wlen);
//extern U16 Lc_read_cyc_buf(PenPoint *rbuf ,WR_Buf *rp ,U16 rlen);
#endif

133
source/app/app_task_speech.c

@ -1,55 +1,130 @@
#include "app_task_speech.h"
#include "app_task_tcp.h"
#include "../msp/msp_uart3.h"
#include "../msp/msp_uart0.h"
#define START_CODE 0x7E
#define END_CODE 0xEF
TS_TASK_SPEECH ts_speech;
void L3_task_speech_init(void)
{
U8 i;
//U8 music[6] = {0x7E,0x04,0xAE,0x1E,0x30,0xEF};
//L0_uart0_sendArray((U8 *)&open,9);
//U8 code open[9] = {0x7E,0x07,0xA3,0x43,0x30,0x30,0x39,0x86,0xEF};
//L0_uart3_sendArray((U8 *)&open , 9);
L1_task_init(&ts_speech.task);
L3_task_s_go(ts_speech,D_task_init);
for(i=0;i<CC_SPEECH_INFO;i++)
{
ts_speech.cc_speech_info[i].mask = 0;
}
ts_speech.cc_speech_info[0].oper = SPEECH_NAME_PLAY;
ts_speech.cc_speech_info[0].mask = 0;
}
void L3_task_speech_handle(TS_tcp *s)
#define D_task_wait_tcp_order 0x61
#define D_task_speech_send 0x62
void L3_task_speech_handle(TS_TASK_SPEECH *s)
{
TTSS_Task_init()
L2_task_go(D_task_wait_tcp_order);
TTSS_Task_step(D_task_wait_tcp_order)
if(s_uart2_tcp_rec.ok && (ts_tcp.slaverIndex != 0))
//if(s_uart2_tcp_rec.ok)
{
s_uart2_tcp_rec.ok = 0;
s->pkg = (TS_PH3_ccmodbus*)(s_uart2_tcp_rec.sp);
if(s->pkg->slaver == SERVER_ID)
{
L3_ccmodbus_slaver_ack(s->pkg,s->ack);
s->ccmd_speech_info[0].start = START_CODE;
s->ccmd_speech_info[0].num = 0x07;
s->ccmd_speech_info[0].oper = SPEECH_NAME_PLAY;
s->ccmd_speech_info[0].title = 0x43;
//ts_speech.ccmd_speech_info[0].buf = (U8*)&R.spee_order;
s->ccmd_speech_info[0].end = END_CODE;
//Lc_buf_copy_uc((U8 *)&s->ccmd_speech_info[0].buf,(U8 *)&R.spee_order,(U16)2);
//L0_uart0_sendArray((U8 *)&R.spee_order,2); //00 04
s->slaverIndex = 0;
s->pkglen = L3_pack_speech(&s->speech_pkg , &s->ccmd_speech_info + s->slaverIndex);
L2_task_go(D_task_speech_send);
}
}
else
{
L2_task_go(D_task_wait_tcp_order);
}
TTSS_Task_step(D_task_speech_send)
{
L0_uart3_sendArray((U8 *)&s->speech_pkg, s->pkglen);
//L0_uart0_sendArray((U8*)&s->speech_pkg,s->pkglen);
}
L2_task_go(D_task_wait_tcp_order);
TTSS_Task_end();
}
U8 ascTable[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
U8 *hexBytes2AsciiBytes(U8 asciiBytes[],U8 hexBytes[],U8 hexBytesLen)
{
U8 i = 0;
for(i=0;i<hexBytesLen;i++)
{
asciiBytes[i*2] = ascTable[hexBytes[i] >> 4 & 0x0F];
asciiBytes[i*2 + 1] = ascTable[hexBytes[i] >> 0 & 0x0F];
}
return asciiBytes;
}
U8 L3_pack_speech_A3(TS_SPEECH *pspeech , U8 *tcp_buf ,U8 *buf)//tcp传来的buf
U8 Fun_SC_Check(U8 *p1, unsigned short int len)
{
long name;
U8 sum = 0;
for(;len > 0; len--)
{
sum += *p1++;
}
return sum;
}
U8 L3_pack_speech_A3(TS_SPEECH *pspeech , U8 start ,U8 num ,U8 title ,U8 end)//tcp传来的buf
{
int name;
U8 tcp_buf[6];
U8 str_buf[6];
U8 bufsize = 9;
pspeech->start = START_CODE;
pspeech->num = 0x07;
pspeech->start = start;
pspeech->num = num;
pspeech->oper = SPEECH_NAME_PLAY;
pspeech->title = 0x43;
name = hexToDec(&tcp_buf);
tcp_buf[0] = (int)(name/100);
tcp_buf[1] = (int)((name%100)/10);
tcp_buf[2] = (int)(name%10);
Lc_hex2ascii(&tcp_buf,&pspeech->buf,3);
pspeech->crc = (pspeech->num + pspeech->oper + pspeech->buf[0] + pspeech->buf[1] + pspeech->buf[2] + pspeech->buf[3])>> 0 & 0xFF//累加和校验
pspeech->end = END_CODE;
pspeech->title = title;
Lc_buf_copy_uc((U8 *)&tcp_buf,(U8 *)&R.spee_order,(U16)2);
hexBytes2AsciiBytes(str_buf,tcp_buf,2);
name = getIndexOfSigns(str_buf[2])*16+getIndexOfSigns(str_buf[3])*1;
pspeech->buf[0] = (U8)(name/100) ;
pspeech->buf[1] = (U8)((name%100)/10);
pspeech->buf[2] = (U8)(name%10);
//L0_uart0_sendArray((U8*)&tcp_buf,3);
Lc_hex2ascii((U8 *)&pspeech->buf,(U8 *)&pspeech->buf,3);
pspeech->crc = Fun_SC_Check(&pspeech->num,6); //累加和校验
pspeech->end = end;
return bufsize;
}
U8 L3_pack_ccmodbus(TS_SPEECH *pspeech , CC_SPEECH_INFO *speech_info)
U8 L3_pack_speech(TS_SPEECH *pspeech, CCMD_SPEECH_INFO *speech_info)
{
U16 pkglen = 0;
switch(speech_info->oper)
{
case SPEECH_NAME_PLAY:
pkglen = L3_pack_ccmodbus_03(pspeech,tcp_buf,speech_info->buf);
break;
default:
break;
case SPEECH_NAME_PLAY:
pkglen = L3_pack_speech_A3(pspeech,speech_info->start,speech_info->num,speech_info->title,speech_info->end);
break;
default:
break;
}
pccmodbus->num = pkglen;
return pkglen + 3;
return pkglen;
}

38
source/app/app_task_speech.h

@ -1,11 +1,17 @@
#ifndef _APP_TASK_SPEECH_H
#define _APP_TASK_SPEECH_H
#include "../tpc/ccmodbus.h"
#include "../ctask/task.h"
#define CC_SPEECH_INFO_MAX 1
#define D_s_TS_speech_max 32
#define D_s_TS_speech_max 16
enum SPEECH_OPER
{
SPEECH_NAME_PLAY 0xA3;
SPEECH_NAME_PLAY = 0xA3,
};
typedef struct
@ -14,32 +20,42 @@ typedef struct
vU8 num;
vU8 oper;
vU8 title;
vU8 buf[D_s_TS_speech_max - 3];
vU8 buf[3];
vU8 crc;
vU8 end;
}TS_SPEECH;
typedef struct
{
U16 slaver;
U16 start;
U16 num;
U16 oper;
U16 reg;
U16 regnum;
U16 bytes;
U8 *buf;
U16 mask;
}CC_SPEECH_INFO;
U16 title;
//U8 buf[2];
U16 end;
}CCMD_SPEECH_INFO;
typedef struct
{
TS_task task;
U16 slaverIndex;
U16 pkglen;
CC_SPEECH_INFO cc_speech_info[CC_SPEECH_INFO_MAX];
TS_PH3_ccmodbus *pkg;
TS_PH3_ccmodbus *ack;
TS_SPEECH *speech_pkg;
CCMD_SPEECH_INFO ccmd_speech_info[CC_SPEECH_INFO_MAX];
}TS_TASK_SPEECH;
extern TS_TASK_SPEECH ts_speech;
extern void L3_task_speech_init(void);
extern void L3_task_speech_handle(TS_TASK_SPEECH *s);
extern U8 L3_pack_speech_A3(TS_SPEECH *pspeech , U8 start ,U8 num ,U8 title ,U8 end);//tcp传来的buf;//tcp传来的buf
extern U8 L3_pack_speech(TS_SPEECH *pspeech, CCMD_SPEECH_INFO *speech_info);
extern U8 *hexBytes2AsciiBytes(U8 asciiBytes[],U8 hexBytes[],U8 hexBytesLen);
extern U8 Fun_SC_Check(U8 *p1, unsigned short int len);

86
source/app/app_task_tcp.c

@ -39,7 +39,6 @@ void L3_task_tcp_handle(TS_tcp *s)
{
L2_task_go(D_task_tcp_switch_next_slaver);
}
TTSS_Task_step(D_task_tcp_send_modbus_pkg) //发送包
if(G.ccmd_slaver_info[s->slaverIndex].mask == 1)
{
@ -50,68 +49,75 @@ void L3_task_tcp_handle(TS_tcp *s)
s->sendStamp = s_nos_tick.t_1s;
L2_task_go(D_task_tcp_wait_modbus_ack);
}
TTSS_Task_step(D_task_tcp_wait_modbus_ack) //等待ack
if((s->slaverIndex) == 0)
//if((s->slaverIndex) == 0x00)
switch(s->slaverIndex)
{
if(s_uart2_tcp_rec.ok)
{
s_uart2_tcp_rec.ok = 0;
s_task_gm35_flow.tcp_last_recv_stmp = s_nos_tick.t_1s;
s->pAckPkg = (TS_PH3_ccmodbus*)(s_uart2_tcp_rec.sp);
//L3_gm35_rcv_data((U8*)s->pAckPkg,s->pAckPkg->num);
if(s->pAckPkg->slaver == G.ccmd_slaver_info[s->slaverIndex].slaver)
case 0:
if(s_uart2_tcp_rec.ok)
{
s->ackFlag = 1;
switch(s->slaverIndex)
s_uart2_tcp_rec.ok = 0;
s_task_gm35_flow.tcp_last_recv_stmp = s_nos_tick.t_1s;
s->pAckPkg = (TS_PH3_ccmodbus*)(s_uart2_tcp_rec.sp);
//L3_gm35_rcv_data((U8*)s->pAckPkg,s->pAckPkg->num);
if(s->pAckPkg->slaver == G.ccmd_slaver_info[s->slaverIndex].slaver)
{
case 0://如果oper == 90:成功,91 == 不成功
switch(G.ccmd_slaver_info[s->slaverIndex].oper)
{
s->ackFlag = 1;
//switch(s->slaverIndex)
//{
//case 0://如果oper == 90:成功,91 == 不成功
switch(s->pAckPkg->oper)
{
case 0x90:
//L0_uart0_sendstr("11111");
G.authed = 1;
break;
case 0x91:
G.authed = 0;
break;
}
break;
case 1:
break;
default:
break;
default:
break;
}
}
L2_task_go(D_task_tcp_switch_next_slaver);
}
L2_task_go(D_task_tcp_switch_next_slaver);
}
else if(s_nos_tick.t_1s - s->sendStamp >= 5) //重发
{
if(++s->retryTimes < 3)
{
L2_task_go(D_task_tcp_send_modbus_pkg);
}
else
//#if 0
else if(s_nos_tick.t_1s - s->sendStamp >= 5) //重发
{
L2_task_go(D_task_tcp_switch_next_slaver);
if(++s->retryTimes < 3)
{
L2_task_go(D_task_tcp_send_modbus_pkg);
}
else
{
L2_task_go(D_task_tcp_switch_next_slaver);
}
}
}
//#endif
//break;
//case 1:
break;
case 1:
L2_task_go(D_task_tcp_switch_next_slaver);
break;
default:
break;
//}
}
//}
//}
else
{
L2_task_go(D_task_tcp_switch_next_slaver);
}
//else
//{
//L2_task_go(D_task_tcp_switch_next_slaver);
//}
//L0_uart0_uc(s->ackFlag);
TTSS_Task_step(D_task_tcp_switch_next_slaver) //切换下一个
if(++ s->slaverIndex >= CCMD_SLAVER_INFO_MAX)
{
s->slaverIndex = 0;
}
L2_task_go(D_task_tcp_constructor_modbus_pkg);
TTSS_Task_end();
}

2
source/app/app_task_tcp_control.c

@ -38,7 +38,7 @@ void L3_task_tcp_control_handle(TS_tcp_control *s)//判定是否抬笔/缓冲区
//发送认证包
G.ccmd_slaver_info[0].mask = 1;
}
else if(ts_task_oid.can_send)
else if(ts_task_oid.can_send && G.authed)
{
ts_task_oid.can_send = 0;
G.ccmd_slaver_info[1].buf = (U8*)&points;

68
source/app/main.c

@ -69,6 +69,7 @@ stc5ac32s
void L0_main_init(void)
{
Lc_delay_ms(200);
//板卡初始化
L0_board_config();
@ -77,15 +78,15 @@ void L0_main_init(void)
//串口2初始化
L0_uart2_buf_init();
//串口3初始化
//L0_uart3_buf_init();
L0_uart3_buf_init();
//Lc_delay_ms(100);
L1_tick_init();
//P53口初始化为 推挽输出
L0_PW_3V3_INIT();
//开启全局中断
EA = 1;
L0_uart0_sendstr("\r\nasV1.a");
#if 0
L1_oid_init();
printf(" ok\r\n");
@ -94,7 +95,7 @@ void L0_main_init(void)
#endif
//系统时钟初始化
L0_timer0_Init();
//L0_key_init();
L0_key_init();
//G初始化
L3_param_init();
//R初始化
@ -106,12 +107,13 @@ void L0_main_init(void)
//L3_task_reglisten_init();
//w600任务初始化
L3_task_gm35_flow_init(W600_ST);
// L3_task_gm35_flow_init(W600_ST);
//按键任务初始化
//L0_key_init();
L0_key_init();
//笔头任务初始化
L1_oid_init();
//语音模块初始化
// L3_task_speech_init();
//tcp轮询任务初始化
L3_task_tcp_init();
L3_task_tcp_control_init();
@ -122,6 +124,10 @@ void L0_main_init(void)
//===============================================
void main(void)
{
//int i;
U8 code open[9] = {0x7E,0x07,0xA3,0x43,0x30,0x30,0x39,0x86,0xEF};
U8 buletooth[7] = {0x7E,0x05,0xED,0x00,0x00,0xF2,0xEF};
//初始化
L0_main_init();
//获取mcu id
@ -129,11 +135,30 @@ void main(void)
//打印版本信息
L0_uart0_sendArray("v1.0",4);
L0_uart0_sendstr("KEY1-TEST");
Lc_delay_ms(3000);
L0_uart3_sendArray((U8 *)&open , 9);
// L0_uart3_sendArray((U8 *)&buletooth , 7);
// L0_uart0_sendArray((U8 *)&buletooth , 7);
// 控制wifi_3v3输出
L0_PW_3V3_ON();
#if 0
for(i =0;i<100;i++)
{
//Lc_delay_ms(100);
L0_uart3_sendArray((U8 *)&open , 9);
Lc_delay_ms(100);
}
#endif
while(1)
{
L1_Oid_readoid();
if(1 == s_nos_tick.t1s_heartbeat)//1s
{
s_nos_tick.t1s_heartbeat = 0;//置0清空
@ -141,8 +166,8 @@ void main(void)
D_print_heartbeat()
{///这个地方可以放置心跳的打印信息
///如果其他的打印存在,并且关闭了这个打印的话,这个打印会临时被关闭,下一次打开
L0_uart0_uc('.');
// L0_uart0_uc('.');
// L0_uart2_sendArray((U8 *)&buletooth , 7);
}
}
@ -171,7 +196,7 @@ void main(void)
switch(s_uart0_rec.buf[1])
{
case 0x0d:
/// L1_sd_debug(&s_uart0_rec.buf[2]);
// L1_sd_debug(&s_uart0_rec.buf[2]);
break;
case 0x00:
L1_oid_debug(&s_uart0_rec.buf[2]);
@ -180,33 +205,38 @@ void main(void)
break;
}
}
// 7E 04 AE 1E XX EF
#endif
//笔头数据采集
//L3_task_oid_handle(&ts_task_oid);
//WIFI
L3_uart2_exp_protocol(&s_uart2_at);
L2_task_gm35_flow_handle(&s_task_gm35_flow);
// L3_uart2_exp_protocol(&s_uart2_at);
// L2_task_gm35_flow_handle(&s_task_gm35_flow);
//笔头数据采集
L3_task_oid_handle(&ts_task_oid);
//寄存器值监控
//L3_task_reglisten_handle(&s_task_reglisten);
//输出,响应485协议
//L3_task_modbus_handler(&s_uart0_rec);
//语音模块
// L3_task_speech_handle(&ts_speech);
//按键处理
//L3_task_key_handle(&s_task_key_handle);
//L3_task_modbus_handler2(&s_uart2_rec);
L3_task_key_handle(&s_task_key_handle);
//L3_task_modbus_handler2(&s_uart2_rec);
#if 1
//tcp发送
L3_task_tcp_handle(&ts_tcp);
// L3_task_tcp_handle(&ts_tcp);
//tcp master->slaver发送逻辑控制
L3_task_tcp_control_handle(&ts_tcp_control);
// L3_task_tcp_control_handle(&ts_tcp_control);
#endif
}
}
//end main

3
source/app/main.h

@ -39,7 +39,7 @@
#include "../msp/msp_uart0.h"
#include "../msp/msp_uart2.h"
//#include "../msp/msp_uart3.h"
#include "../msp/msp_uart3.h"
#include "../msp/eeprom.h"
@ -58,6 +58,7 @@
#include "../app/task_key.h"
#include "../app/app_task_tcp.h"
#include "../app/app_task_tcp_control.h"
#include "../app/app_task_speech.h"
#include "../asp/asp_oid.h"
#include "../ctask/tick.h"

138
source/app/task_key.c

@ -13,20 +13,21 @@
#include "../clib/clib.h"
struct _s_task_key_ s_task_key_handle;
void L0_key_init(void)
{
//使能 INT1下降沿中断
IT0 = 0;
//IT0 = 0;
//外部中断允许
EX0 = 1;
//EX0 = 1;
//使能 INT1下降沿中断
IT1 = 0;
//IT1 = 0;
//外部中断允许
EX1 = 1;
//EX1 = 1;
L1_task_init(&s_task_key_handle.task);
L3_task_s_go(s_task_key_handle,D_task_init);
}
#if 0
void INT0_isrHanddle(void) D_SERVE_INT0
{
struct _s_task_key_ *p = &s_task_key_handle;
@ -67,32 +68,107 @@ void INT1_isrHanddle(void) D_SERVE_INT1
IE1 = 0; //清除INT1中断程序执行过程中的中断请求
EX1 = 1; //开中断
}
#endif
void L3_task_key_handle(struct _s_task_key_ *p)
{
if(p->key1_ok)
{
if(p->time1>=180)
if(key1 == 0)
{
//Lc_delay_ms(10);//按键防抖
if(key1 == 0)
{
p->key1_ok = 1;
while(!key1)
{
p->time1++;
// L0_uart0_uchex(p->time1);
}
}
}
if(p->key1_ok)
{
LED1 = ~LED1;
}
else
if(p->time1 >= 180)
{
// L0_uart0_uc('#');
// L0_uart0_uchex(p->time1);
// //LED1 = ~LED1;
// LED4 = ~LED4;
}
else
{
U8 front[14] = {0xFF,0xFE,0x0B,0x14,0x10,0x00,0x03,0x00,0x01,0x02,0x00,0x00,0x54,0xF3};
LED3 = 1;
Lc_delay_ms(100);
LED3 = 0;
LED3 = ~LED3;
L3_gm35_send_data((U8 *)&front,14);
#if 0
U8 i;
U8 mu[9];
U8 music[9] = {0x7E,0x07,0xA3,0x43,0x30,0x30,0x39,0x86,0xEF};
FF FE 0B 14 10 00 03 00 01 02 00 00 54 F3
//7E 07 A3 43 30 30 39 86 EF
for(i = 0;i<9;i++)
{
mu[i] = music[i] & 0xFF;
}
L0_uart3_sendArray((U8 *)&mu, 9);
L0_uart0_sendArray((U8 *)&mu, 9);
#endif
}
p->key1_ok = 0;
p->time1=0;
}
if(key2 == 0)
{
//Lc_delay_ms(10);//按键防抖
if(key2 == 0)
{
p->key2_ok = 1;
while(!key2)
{
p->time2++;
}
}
}
if(p->key2_ok)
{
//LED2 = ~LED2;
U8 i;
U8 mu[9];
U16 music[9] = {0x7E,0x07,0xA3,0x43,0x30,0x30,0x39,0x86,0xEF};
//7E 07 A3 43 30 30 39 86 EF
for(i = 0;i<9;i++)
if(p->time2>=180)
{
mu[i] = music[i]>> 0 & 0xFF;
//LED1 = ~LED1;
}
L0_uart3_sendArray((U8 *)&mu, 9);
L0_uart0_sendArray((U8 *)&mu, 9);
}
p->key1_ok = 0;
p->time1=0;
else
{
U8 back[14] = {0xFF,0xFE,0x0B,0x14,0x10,0x00,0x03,0x00,0x01,0x02,0x00,0x01,0x95,0x33};
LED3 = 1;
Lc_delay_ms(100);
LED3 = 0;
LED3 = ~LED3;
L3_gm35_send_data((U8 *)&back,14);
#if 0
U8 i;
U8 mu[9];
U8 music[9] = {0x7E,0x07,0xA3,0x43,0x30,0x30,0x39,0x86,0xEF};
//FF FE 0B 14 10 00 03 00 01 02 00 00 54
//7E 07 A3 43 30 30 39 86 EF
for(i = 0;i<9;i++)
{
mu[i] = music[i] & 0xFF;
}
L0_uart3_sendArray((U8 *)&mu, 9);
L0_uart0_sendArray((U8 *)&mu, 9);
#endif
}
p->key2_ok = 0;
p->time2=0;
}
#if 0
if(p->key2_ok)
{
if(p->time2>=180)
@ -106,6 +182,7 @@ void L3_task_key_handle(struct _s_task_key_ *p)
p->key2_ok = 0;
p->time2=0;
}
#endif
if(key3 == 0)
{
//Lc_delay_ms(10);//按键防抖
@ -122,15 +199,26 @@ void L3_task_key_handle(struct _s_task_key_ *p)
{
if(p->time3>=180)
{
LED3 = ~LED3;
LED2 = ~LED2;
LED1 = ~LED1;
LED4 = ~LED4;
Lc_delay_ms(100);
// LED1 = 0;
L3_gm35_send_str("+++");
Lc_delay_ms(1000);
//s_task_gm35_flow.mode=W600_AP;
L3_task_gm35_flow_init(W600_AP);
//G.w600_mode = 0;
}
else
{
LED2 = ~LED2;
//LED2 = ~LED2;
}
p->key3_ok = 0;
p->time3=0;
}
}

4
source/app/task_key.h

@ -15,9 +15,9 @@
#include "../bsp/bsp_config.h"
#include "../ctask/task.h"
#include "../msp/msp_uart0.h"
#include "../msp/msp_uart3.h"
#include "../app/task_w600.h"
#include "../clib/type.h"
struct _s_task_key_
{
TS_task task;

153
source/app/task_w600.c

@ -96,6 +96,15 @@ void L3_uart2_exp_protocol(struct _s_PC1_0D0A_ *p)
{
s_task_gm35_flow.st_error= 1;
}
else if(Lc_strStartsWith(pPara,"no change"))
{
s_task_gm35_flow.serve_ok= 1;
}
else if(Lc_strStartsWith(pPara,"CIPMUX and"))
{
s_task_gm35_flow.ap_serve_ok = 1;
}
//Station模式判定
if(s_task_gm35_flow.mode == W600_ST)
{
@ -111,7 +120,7 @@ void L3_uart2_exp_protocol(struct _s_PC1_0D0A_ *p)
//AP模式判定
else if(s_task_gm35_flow.mode == W600_AP)
{
if(Lc_strStartsWith(pPara,"+IPD,0"))
if(Lc_strStartsWith(pPara,"+IPD,"))
{
//解析协议,success
//1将id,pwd放入寄存器2.ok=1
@ -156,6 +165,10 @@ void L3_uart2_exp_protocol(struct _s_PC1_0D0A_ *p)
{
s_task_gm35_flow.ap_tcp_ok = 1;
}
else if(Lc_strStartsWith(pPara,"1,CONNECT"))
{
s_task_gm35_flow.ap_tcp_ok = 1;
}
else if(Lc_strStartsWith(pPara,"SEND OK"))
{
s_task_gm35_flow.ap_data_ok= 1;
@ -164,6 +177,7 @@ void L3_uart2_exp_protocol(struct _s_PC1_0D0A_ *p)
{
s_task_gm35_flow.ap_conn_ok = 1;
}
}
p->ok = 0;
}
@ -214,17 +228,21 @@ void L3_task_gm35_flow_init(U8 mode)
#define TTSS_TASK_GM35_FLOW_ST_CIPSEND 0x08
#define TTSS_TASK_GM35_FLOW_ST_DATA 0x09
#define TTSS_TASK_GM35_FLOW_ST_CIPMODE0 0x10
#define TTSS_TASK_GM35_FLOW_ST_SERVE 0x11
#define TTSS_TASK_GM35_FLOW_AP 0x20
#define TTSS_TASK_GM35_FLOW_AP_WIFI 0x21
#define TTSS_TASK_GM35_FLOW_AP_CIPMUX1 0x22
#define TTSS_TASK_GM35_FLOW_AP_SERVER 0x23
#define TTSS_TASK_GM35_FLOW_TCP_TIME 0x24
#define TTSS_TASK_GM35_FLOW_AP_DATA 0x25
#define TTSS_TASK_GM35_FLOW_AP_TCP_CONN_WAIT 0x26
#define TTSS_TASK_GM35_FLOW_AP_WIFI_DATA_STA_WAIT 0x27
#define TTSS_TASK_MODE_TRAN 0x28
#define TTSS_TASK_MODE_SERVER_CLOSE 0x29
#define TTSS_TASK_GM35_FLOW_AP_CIPMUX0 0x24
#define TTSS_TASK_GM35_FLOW_TCP_TIME 0x25
#define TTSS_TASK_GM35_FLOW_AP_DATA 0x26
#define TTSS_TASK_GM35_FLOW_AP_TCP_CONN_WAIT 0x27
#define TTSS_TASK_GM35_FLOW_AP_WIFI_DATA_STA_WAIT 0x28
#define TTSS_TASK_MODE_TRAN 0x29
#define TTSS_TASK_MODE_CONFIG_WAIT 0x2A
#define TTSS_TASK_MODE_SERVER_CLOSE 0x2B
#define INS_TIMEOUT 5
@ -236,7 +254,7 @@ void L3_task_gm35_flow_init(U8 mode)
void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
{
TTSS_Task_init()
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ATEQV,D_Tdelay_3s);//上电等待10s
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ATEQV,D_Tdelay_1s);//上电等待10s
TTSS_Task_step(TTSS_TASK_GM35_FLOW_ATEQV)
if(s->send == 0)
{//发送
@ -245,11 +263,18 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
s->ins_stmp = s_nos_tick.t_1s;
s->send = 1;
}
else if(s->ins_ok == 1) //等待
else if(1 == s->ap_serve_ok) //等待
{
s->send = 0;
s->ap_serve_ok = 0;
L3_gm35_send_str(AT_INS_AP_SERVER_CLOSE);
}
else if(s->serve_ok == 1 || s->ins_ok == 1) //等待
{
s->send = 0;
s->serve_ok = 0;
L2_task_go_Tdelay(s->mode == W600_ST ? TTSS_TASK_GM35_FLOW_ST
: TTSS_TASK_GM35_FLOW_ST_CIPMODE0,D_Tdelay_3s);
:TTSS_TASK_GM35_FLOW_ST_SERVE,D_Tdelay_300ms);
}
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
@ -267,7 +292,7 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
else if(s->ins_ok == 1) //等待
{
s->send = 0;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_WIFI,D_Tdelay_3s);
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_WIFI,D_Tdelay_300ms);
}
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
@ -286,7 +311,11 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
else if(1 == s->ins_ok && 1 == s->st_wifi_ok) //等待
{
s->send = 0;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMUX0,D_Tdelay_3s);
LED2 = 0;
LED2 = ~LED2;
LED2 = ~LED2;
LED2 = ~LED2;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMUX0,D_Tdelay_300ms);
}
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
@ -305,11 +334,12 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
else if(1 == s->ins_ok) //等待
{
s->send = 0;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_TCP,D_Tdelay_3s);
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_TCP,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_TCP)
@ -324,7 +354,8 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
else if(1 == s->ins_ok || 1 == s->st_cip_ok) //等待
{
s->send = 0;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMODE1,D_Tdelay_3s);
LED3 = 0;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPMODE1,D_Tdelay_300ms);
}
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
{//超时重发
@ -341,7 +372,7 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
else if(1 == s->ins_ok) //等待
{
s->send = 0;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPSEND,D_Tdelay_3s);
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPSEND,D_Tdelay_300ms);
}
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
{//超时重发
@ -355,7 +386,7 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
s->st_error = 0;
s->ins_stmp = s_nos_tick.t_1s;
s->send = 1;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPSEND,D_Tdelay_500ms);//发完之后要等,不然st_error == 0没用 ,没收到error之前也是=0
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_CIPSEND,D_Tdelay_300ms);//发完之后要等,不然st_error == 0没用 ,没收到error之前也是=0
}
else if(1 == s->st_error)
{
@ -365,7 +396,6 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
else if(0 == s->st_error)
{
s->send = 0;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ST_DATA,0);
}
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
@ -381,6 +411,30 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
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)
{//发送
@ -392,7 +446,27 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
else if(1 == s->ins_ok) //等待
{
s->send = 0;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP,D_Tdelay_3s);
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)
@ -410,7 +484,7 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
else if(1 == s->ins_ok) //等待
{
s->send = 0;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_WIFI,D_Tdelay_3s);
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)
@ -422,13 +496,14 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
{//发送
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) //等待
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_3s);
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)
@ -446,7 +521,7 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
else if(1 == s->ins_ok) //等待
{
s->send = 0;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_SERVER,D_Tdelay_3s);
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)
@ -464,7 +539,7 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
else if(1 == s->ins_ok) //等待
{
s->send = 0;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_TCP_TIME,D_Tdelay_3s);
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)
@ -475,6 +550,7 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
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;
@ -483,7 +559,7 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
{
s->send = 0;
s->ap_tcp_ok = 0;
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_AP_TCP_CONN_WAIT,D_Tdelay_3s);
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)
@ -502,9 +578,12 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
TTSS_Task_step(TTSS_TASK_GM35_FLOW_AP_WIFI_DATA_STA_WAIT)
if(1 == s->ap_rec_ok)//收到正确的数据才会ok=1
{//ok回复#ok$\r\n
L0_uart0_sendstr("ap config ok");
L3_gm35_send_str(AT_INS_AP_SEND);//进入发送模式
L2_task_go_Tdelay(TTSS_TASK_MODE_TRAN,D_Tdelay_1s);
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)
{
@ -512,22 +591,29 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
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->ap_data_ok = 0;
s->ins_stmp = s_nos_tick.t_1s;
s->send = 1;
s->ins_stmp = s_nos_tick.t_1s;
}
else if(1 == s->ap_data_ok) //等待
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_3s);
L2_task_go_Tdelay(TTSS_TASK_MODE_SERVER_CLOSE,D_Tdelay_100ms);
}
TTSS_Task_step(TTSS_TASK_MODE_SERVER_CLOSE)
if(s->send == 0)
{//发送
@ -539,9 +625,10 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
else if(1 == s->ins_ok) //等待
{
s->send = 0;
LED1 = 1;
LED2 = 1;
L3_task_gm35_flow_init(W600_ST);
}
else if(s_nos_tick.t_1s - s->ins_stmp > INS_TIMEOUT)
{//超时重发
s->send = 0;

15
source/app/task_w600.h

@ -25,20 +25,21 @@
#define AT_INS_ST "AT+CWMODE=1\r\n" //进入station模式
//#define AT_INS_ST_WIFI "AT+CWJAP_DEF=\"ccsens\",\"ccsens123\"\r\n" //网络查询指令
#define AT_INS_ST_CIPMUX0 "AT+CIPMUX=0\r\n" //GPRS操作指令
#define AT_INS_ST_TCP "AT+CIPSTART=\"TCP\",\"192.168.0.81\",4001\r\n" //连接服务器
#define AT_INS_ST_TCP "AT+CIPSTART=\"TCP\",\"www.tall.wiki\",8195\r\n" //连接服务器
//#define AT_INS_ST_TCP "AT+CIPSTART=\"TCP\",\"192.168.0.81\",4001\r\n" //连接服务器
#define AT_INS_ST_CIPMODE1 "AT+CIPMODE=1\r\n" //发送数据
#define AT_INS_ST_CIPSEND "AT+CIPSEND\r\n" //主动关闭连接
#define AT_INS_ST_CIPMODE0 "AT+CIPMODE=0\r\n" //查询连接状态
#define AT_INS_AP "AT+CWMODE=2\r\n" //进入AP模式
#define AT_INS_AP_WIFI "AT+CWSAP=\"ccsens_pen\",\"ccsens123\",10,4,4,0\r\n" //设置AP参数
#define AT_INS_AP_WIFI "AT+CWSAP=\"ccsens_pen\",\"ccsens\",10,4,4,0\r\n" //设置AP参数
#define AT_INS_AP_CIPMUX1 "AT+CIPMUX=1\r\n" //开启多连接
#define AT_INS_AP_SERVER "AT+CIPSERVER=1,1001\r\n" //建立服务器
#define AT_INS_AP_TCP_TIME "AT+CIPSTO=300\r\n"
#define AT_INS_AP_SEND "AT+CIPSENDEX=0,6\r\n" //
#define AT_INS_AP_SERVER_CLOSE "AT+CIPSERVER=0\r\n" //
#define AT_INS_AP_SERVER_CLOSE "AT+CIPSERVER=0\r\n" //关闭服务器
#define AT_INS_AP_CLOSE "AT+CWQAP\r\n" //断开AP连接
////<<<<<<<<<<<<<<<<<<<_s_task_test_<<<<<<<<<<<<<<<<<<<<<<<<
enum _s_w600_mode
{
@ -59,8 +60,10 @@ struct _s_task_gm35_gprs_
vU8 ap_tcp_ok;
vU8 ap_data_ok;
vU8 st_error;
vU8 serve_ok;
vU8 ap_serve_ok;
vU8 mode;
vU8 rev;
vU8 send_lock;
vU8 module_ok;
vU8 conn_ok;
@ -98,7 +101,7 @@ extern struct _s_task_gm35_gprs_ s_task_gm35_flow;
extern struct _s_task_gm35_gprs_ s_task_gm35_flow;
extern void L3_gm35_send_str(U8 *str);
extern void L3_gm35_send_data(U8 *buf , U8 len);
extern void L3_gm35_send_data(U8 *buf , U16 len);
extern void L3_gm35_rcv_data(U8* buf,U8 num);
extern void L3_task_gm35_flow_init(U8 mode);

24
source/asp/asp_oid.c

@ -18,9 +18,10 @@ Ts_OID_frame_xy_ points[POINT_LEN+10];
void L3_task_oid_handle(TS_task_oid_ *s)
{
// L0_uart0_sendstr("oid_p");
TTSS_Task_init();
TTSS_Alarm_init(s->tts,1000);
TTSS_Alarm_init(s->tts,300);
///(X) = s_nos_tick.t_10ms + delay;
L2_task_go(D_TASK_OID_t1);
TTSS_Task_step(D_TASK_OID_t1)
@ -99,7 +100,7 @@ void L3_task_oid_handle(TS_task_oid_ *s)
L2_task_go(D_TASK_OID_t1);
}
TTSS_Task_step(TTSS_TASK_OID_WRITE)
//L0_uart2_sendArray((U8 *)&s->ts_frame,(U16)10);
//L0_uart0_sendArray((U8 *)&s->ts_frame,(U16)10);
Lc_buf_copy_uc((U8 *)&oid_buf[s->point],(U8 *)&s->ts_frame,(U16)10);
s->point ++;
L2_task_go(TTSS_TASK_OID_SEND);
@ -116,18 +117,27 @@ void L3_task_oid_handle(TS_task_oid_ *s)
for(j = 0;j<s->extra;j++)
{
Lc_buf_copy_uc((U8 *)&points[j],(U8 *)&oid_buf[j],(U16)10);
//L0_uart2_sendArray((U8 *)&points[j],(U16)10);
//L0_uart0_sendArray((U8 *)&points[j],(U16)10); // 1
//L0_uart0_0d0a();
}
//L0_uart0_sendstr("points->cd.xy100.x100 = "); // 2
//L0_uart0_ushex(points->cd.xy100.x100);
//L0_uart0_0d0a();
//L0_uart0_sendstr("points->cd.xy100.y100 = ");
//L0_uart0_ushex(points->cd.xy100.y100);
//L0_uart0_0d0a();
//G.ccmd_slaver_info[1].buf = (U8*)&points;
//G.ccmd_slaver_info[1].extra_num = (s->extra)*5;
//L0_uart2_sendArray((U8 *)&points,(s->extra)*10);
//L0_uart0_sendArray((U8 *)&points,(s->extra)*10);
//s->extra = 0;
s->can_send = 1;
#if 0
#if 0//3
for(j = 0;j<k;j++)
{
L0_uart2_sendArray((U8 *)&oid_buf[j],(U16)10);
L0_uart2_uc(' ');
L0_uart0_sendArray((U8 *)&oid_buf[j],(U16)10);
L0_uart0_uc(' ');
}
#endif
L2_task_go(D_TASK_OID_t1);

15
source/bsp/bsp_config.c

@ -46,7 +46,7 @@ void L0_board_config(void)
//BITN_1(P_SW2 ,BITN0);// rxd2 p4.0 txd2 p4.2
//uart3
//P_SW2 = 0x02; // RXD3_2/P5.0, TXD3_2/P5.1
P_SW2 = 0x00;// RXD3_2/P0.0, TXD3_2/P0.1
//uart4
//BITN_1(P_SW2 ,BITN2);// rxd4 p5.2 txd4 p5.3
@ -60,9 +60,14 @@ void L0_board_config(void)
//D_stdIO_P5(BITN5);
//IO
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_stdIO_P3(BITN3);
@ -70,14 +75,16 @@ void L0_board_config(void)
D_stdIO_P3(BITN5);
D_stdIO_P3(BITN6);
D_stdIO_P3(BITN7);
D_HighI_P2(BITN7);
D_HighI_P2(BITN6);
D_stdIO_P2(BITN7);
D_stdIO_P2(BITN6);
//D_HighI_P5(BITN5);
D_HighI_P0(BITN2);
D_stdIO_P0(BITN2);
D_OpenD_P5(BITN5);
D_OpenD_P4(BITN0);
D_HighI_P3(BITN4);
D_HighI_P5(BITN0);
D_HighI_P0(BITN5);
P05 = 0;
#if (TYPE_WDT_ENABLE == D_WDT_STATUS)
WDT_CONTR = 0x27; //使能看门狗,22M时钟下溢出时间约为5s,请注意添加喂狗程序

29
source/bsp/bsp_config.h

@ -136,7 +136,8 @@
#define D_uart2_SBIT SBIT_1
#define D_PIN_UART2 PIN_UART2_Rxd_10_Txd_11 //wifi模块
#define D_uart3_BRT BRT_115200
#define D_PIN_UART3 PIN_UART3_Rxd_43_Txd_44 //声音模块
#define D_uart3_SBIT SBIT_1
#define D_PIN_UART3 PIN_UART3_Rxd_00_Txd_01 //声音模块
#define D_uart4_BRT BRT_115200
//485配置
@ -155,18 +156,25 @@
#define D_MODBUS_REG_MAX_NUM 32 //每次最多读取/写入的寄存器数量,此处的数量要注意和 D_tp_handle_x_len 对应
//外设定义
#define LED1 P27 //D4
#define LED2 P26 //D4
#define LED3 P2 //D4
#define LED3 P02 //D4
#define LED4 P55 //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()
//按键
#define key1 P32
#define key2 P33
#define key3 P40
#define key1 P32 //音量增大
#define key2 P33 //音量减小
#define key3 P40 //开关机
//EEP存储地址定义
#define D_EEP_SECTOR_SIZE 0x200 //每个扇区0x200==512bytes
#define D_EEP_SECTOR_BLOCK_SIZE 0x40 //扇区中每个数据块0x40==64bytes,可选值[32,64,128]等
@ -206,7 +214,7 @@
#define L0_SDA_AT() D_P51_AT()
#define L0_SCL_ON() D_P35_ON()
#define L0_SCL_OFF() D_P35_OFF()
#define L0_SCL_AT() D_P35_AT()
#define L0_SCL_AT() D_P35_AT()
#define L0_SDA_OUT() D_P51_AT() //////FIXME
#define L0_SDA_IN() D_P51_ON() //////FIXME
@ -279,6 +287,7 @@ L1_tick_tick
3
***************************default*************************************/
#if 0
#define D_IO_LED1_OFF() D_P27_ON()
#define D_IO_LED1_ON() D_P27_OFF()
#define D_IO_LED1_REV() D_P27_REV()
@ -292,12 +301,12 @@ L1_tick_tick
#define D_IO_LEDkey2_OFF() D_P55_OFF()
#endif
//STEP 5 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<Uart CONFIG
#define SERIAL_MAX_NUM 2
#define SERIAL_MAX_NUM 3
////fixme:和cpu的程序容量息息相关
#define D_UART_send_buf_max 16 /// 9600bps = 10000bps = 1000 Bps = 1Byte/ms
#define D_UART_send_buf_max 32 /// 9600bps = 10000bps = 1000 Bps = 1Byte/ms
/// 19200bps = 20000bps = 2000Bps = 2Byte/ms = 1Byte/0.5ms
/// 128Bytes = 128*0.5ms = 64ms
#define D_UART_send_buf2_max 8 //此处改动会影响L0_uartN_ulhex函数

1
source/bsp/bsp_config_const.h

@ -153,6 +153,7 @@
#define PIN_UART2_Rxd_10_Txd_11 5
//<<<<<<<<<<<<<<<<<<<<<<<<<<<.UART2 PIN
#define PIN_UART3_Rxd_00_Txd_01 6
//>>>>>>>>>>>>>>>>>>>>>>485 Type
#define TYPE_485_NONE 0

61
source/bsp/bsp_oid.c

@ -410,12 +410,56 @@ void L2_oid_ParseF1(void)
uint32_t u32t[2] = 0;
/// L1_print_rcv("\r\n F1=");
ts_oid.oid_type = ts_oid.rec.d[0];
if(ts_oid.rec.d[0] == 0x60)
L0_uart0_sendstr("ts_oid.rec.d[0] = ");
L0_uart0_uchex(ts_oid.rec.d[0]);
L0_uart0_0d0a();
L0_uart0_sendstr("ts_oid.rec.d[1] = ");
L0_uart0_uchex(ts_oid.rec.d[1]);
L0_uart0_0d0a();
L0_uart0_sendstr("ts_oid.rec.d[2] = ");
L0_uart0_uchex(ts_oid.rec.d[2]);
L0_uart0_0d0a();
L0_uart0_sendstr("ts_oid.rec.d[3] = ");
L0_uart0_uchex(ts_oid.rec.d[3]);
L0_uart0_0d0a();
/////////
L0_uart0_sendstr("ts_oid.rec.d16[0] = ");
L0_uart0_ushex(ts_oid.rec.d16[0]);
L0_uart0_0d0a();
L0_uart0_sendstr("ts_oid.rec.d16[1] = ");
L0_uart0_ushex(ts_oid.rec.d16[1]);
L0_uart0_0d0a();
L0_uart0_sendstr("ts_oid.rec.d16[2] = ");
L0_uart0_ushex(ts_oid.rec.d16[2]);
L0_uart0_0d0a();
L0_uart0_sendstr("ts_oid.rec.d16[3] = ");
L0_uart0_ushex(ts_oid.rec.d16[3]);
L0_uart0_0d0a();
// /////////
L0_uart0_sendstr("ts_oid.rec.d32[0] = ");
L0_uart0_ulhex(ts_oid.rec.d32[0]);
L0_uart0_0d0a();
L0_uart0_sendstr("ts_oid.rec.d32[1] = ");
L0_uart0_ulhex(ts_oid.rec.d32[1]);
L0_uart0_0d0a();
// /////////
L0_uart0_sendstr("ts_oid.oid_type = ");
L0_uart0_uchex(ts_oid.oid_type);
L0_uart0_0d0a();
if(1)// if(ts_oid.rec.d[0] == 0x60) // 4
{/// Bit43~Bit0:x,y 轴的坐标数据,x 坐标和 y 坐标都是由整数和小数部分
///组成,整数部分 14bit,小数部分 8bit
G.pen_t = 0;
ts_oid.last_time = s_nos_tick.t_1s;
ts_oid.Xint = ts_oid.rec.d16[3]&0x3fff;
if(ts_oid.Xint < 300)///取决于图片 fixme: cc
{
ts_oid.oid_x = 1;
@ -660,13 +704,26 @@ void L1_Oid_readoid(void)
{
if(!OID_DET)
{
LED1 = ~LED1;
ts_oid.pre_x = ts_oid.X100;
ts_oid.pre_y = ts_oid.Y100;
L0_oid_Recv64();
L2_oid_ParseF1();
//L2_oid_status();
L1_print_rcv("\r\n ");
L0_uart0_sendstr("ts_oid.Xint = ");
L0_uart0_ushex(ts_oid.Xint);
L0_uart0_0d0a();
L0_uart0_sendstr("ts_oid.Yint = ");
L0_uart0_ushex(ts_oid.Yint);
L0_uart0_0d0a();
L0_uart0_sendstr("ts_oid.Xdec = ");
L0_uart0_ushex(ts_oid.Xdec);
L0_uart0_0d0a();
L0_uart0_sendstr("ts_oid.Ydec = ");
L0_uart0_ushex(ts_oid.Ydec);
L0_uart0_0d0a();
L0_uart0_sendstr("oid_p");
}
else if((s_nos_tick.t_1s - ts_oid.last_time >= 2)&& (G.pen_t == 0))
{

92
source/clib/clib.c

@ -27,6 +27,29 @@ U8 Lc_strStartsWith(U8 *s1,U8 *s2)
}
return (*s2 == 0);
}
int Lc_strMidsWith(char *wenben, char *search_word)
{
int i = 0, j = 0, flag = -1;
while (i < Lc_strlen(wenben) && j < Lc_strlen(search_word))
{
if (wenben[i] == search_word[j])
{ //如果字符相同则两个字符都增加
i++;
j++;
}
else
{
i = i - j + 1; //主串字符回到比较最开始比较的后一个字符
j = 0; //字串字符重新开始
}
if (j == Lc_strlen(search_word))
{ //如果匹配成功
flag = 1; //字串出现
break;
}
}
return flag;
}
int Lc_strlen(const char *str)
@ -250,11 +273,11 @@ U32 Lc_vU32_avg(U32 *d, U8 n)
return sum / n;
}
//十六进制转换为十进制
long hexToDec(const char *source)
int hexToDec(const char *source)
{
long sum = 0;
int sum = 0;
long t = 1;
int i, len;
int i,len;
len = Lc_strlen(source);
for(i=len-1; i>=0; i--)
@ -264,8 +287,26 @@ long hexToDec(const char *source)
}
return sum;
}
}
long hex2Dec(U8 *source ,U16 len)
{
int i,t,m;
long sum=0;
for(i=0;i<len;i++)
{
if(source[i]<='9')
{
t=source[i]-'0';
}
else
{
t=source[i]-'A'+10;
sum=sum*16+t;
}
}
return sum;
}
int getIndexOfSigns(char ch)
{
if(ch >= '0' && ch <= '9')
@ -283,6 +324,41 @@ int getIndexOfSigns(char ch)
return -1;
}
unsigned char char_to_hex(unsigned char chr)
{
if((chr>='0')&&(chr<='9'))
chr = 0x30+(chr-'0');
else if((chr>='A')&&(chr<='Z'))//capital
chr = 0x41+(chr - 'A');
else if((chr>='a')&&(chr<='z'))//little
chr = 0x61+(chr-'a');
else
chr = 0xff;
return chr;
}
unsigned char hex_to_char(unsigned char hex)
{
if((hex>=0x30)&&(hex<=0x39))
hex = hex-0x30;
else if((hex>=0x41)&&(hex<=0x5A)) // capital
hex = 'A' + (hex - 0x41);
else if((hex>=0x61)&&(hex<=0x7A)) // little case
hex = 'a' + (hex - 0x61);
else
hex = 0xff;
return hex;
}
void Lc_hextoasc(U8 *buf,U8 *ascii,U16 len)
{
vU16 t = 0,m = 0;
for(t = 0;t < len;t ++)
{
ascii[m] = char_to_hex(buf[t]);
}
}
///// 0 1 (1-0)+1
//// 把buf中的数据从[usStart]到[usEnd] 共 usEnd-usStart+1 的数据转换成ascii
/// 0x11 0x22 ---> 0x31 0x31 0x32 0x32 '1' '1' '2' '2'
@ -293,12 +369,12 @@ void Lc_hex2ascii(U8 *buf,U8 *ascii,U16 len)
{
#if 1
ascii[m] = cguHex2Char[D_uc_high(buf[t])][1];
m ++;
//ascii[m] = cguHex2Char[D_uc_high(buf[t])][1];
//m ++;
ascii[m] = cguHex2Char[D_uc_low (buf[t])][1];
m ++;
ascii[m] =0x20;
m ++;
//ascii[m] =0x20;
//m ++;
#else
ascii[m] = 0x30+m;

7
source/clib/clib.h

@ -30,7 +30,12 @@ typedef struct
extern U8 Lc_Hex2Char(U8 CharStr);
extern int Lc_strlen(const char *str);
extern U8* Lc_strcpy(U8* dst,const char* str);
extern long hexToDec(const char *source);
extern int hexToDec(U8 *source );
extern long hex2Dec(U8 *source ,U16 len);
extern void HexToStr(BYTE *pbDest, BYTE *pbSrc, int nLen);
extern int Lc_strMidsWith(char *wenben, char *search_word);
extern int getIndexOfSigns(char ch);
//extern void Lc_int2str(U32 ui_in,UN_TYPE len,UN_TYPE point,char *d);

5
source/msp/msp_uart0.C

@ -129,8 +129,9 @@ void INTERRUPT_UART(void) D_SERVE_UART
L0_uart0_IntRIClear(); //清除接收中断标志
ts_uart[uNum0].t->reg = SBUF;
//ts_uart[uNum0].tp_handler(ts_uart[uNum0].t);
L1_s2b_PH4(ts_uart[uNum0].t);
L0_timer3_restart();
//L1_s2b_PH4(ts_uart[uNum0].t);
//L0_timer3_restart();
}
if(L0_uart0_IntTI()) //如果是U0发送中断
{

2
source/msp/msp_uart2.C

@ -149,7 +149,7 @@ void INTERRUPT_uart2(void) interrupt 8 ///D_SERVE_uart2// using 2
//L1_s2b_0d0a(&s_uart2_at);
L1_s2b_gm35(L0_uart2_get());
}
if(L0_uart2_IntTI()) //如果是U0发送中断
if(L0_uart2_IntTI()) //如果是U2发送中断
{
L0_uart2_IntTIClear(); //清除发送中断标志
if(ts_uart[uNum2].p->max != ts_uart[uNum2].p->now)

71
source/msp/msp_uart3.c

@ -88,15 +88,32 @@ void L0_uart3_init(void)
T2H = 0xFF; //设置定时初始值
AUXR |= 0x10; //定时器2开始计时
#endif
#if 0
//115200
//U16 val = D_BRT_COUNT(1,D_sys_MainFre,D_uart3_BRT);
S3CON = 0x10; //8位数据,可变波特率
S3CON |= 0x40; //串口3选择定时器3为波特率发生器
T4T3M |= 0x02; //定时器时钟1T模式
T3L = 0xD0; //设置定时初始值
T3H = 0xFF; //设置定时初始值
T3L = 0xD0; //设置定时初始值
T3H = 0xFF; //设置定时初始值
//T3L = val; //设定定时初值
//T3H = val >> 8; //设定定时初值
T4T3M |= 0x08; //定时器3开始计时
}
#endif
// 512000
S3CON = 0x10; //8位数据,可变波特率
S3CON &= 0xBF; //串口3选择定时器2为波特率发生器
AUXR |= 0x04; //定时器时钟1T模式
T2L = 0xF5; //设置定时初始值
T2H = 0xFF; //设置定时初始值
AUXR |= 0x10; //定时器2开始计时
}
void L0_uart3_buf_init(void)
{
@ -106,7 +123,7 @@ void L0_uart3_buf_init(void)
ts_uart[uNum3].t = &s_uart3_rec;
ts_uart[uNum3].t->head = 0;
ts_uart[uNum3].t->ok = 0;
ts_uart[uNum3].tp_handler = L1_s2b_PH4;
//ts_uart[uNum3].tp_handler = L1_s2b_PH4;
ts_uart[uNum3].ack = (U8*)&s_uart3_ack;
L0_uart3_init();
//D_uart3_ES_INT_OPEN(); //打开串口中断
@ -119,16 +136,18 @@ void L0_uart3_buf_init(void)
void L0_uart3_sendArray(U8 * buf, U16 len)
{
//#if (D_UART3_485_TYPE != TYPE_485_NONE)
// D_UART3_485_TX() //切换到输出状态
//#endif
L0_uartN_sendArray(uNum3,buf,len);
#if (D_UART0_485_TYPE != TYPE_485_NONE)
D_UART0_485_TX() //切换到输出状态
#endif
L0_uartN_sendArray(uNum3,buf,len);
}
/*************************************************
UART
*************************************************/
#define D_SERVE_UART3 interrupt 17
//#define D_SERVE_UART3 interrupt 17
void INTERRUPT_UART3(void) D_SERVE_UART3// using 3
{
NOP(); NOP(); NOP();
@ -136,33 +155,33 @@ void INTERRUPT_UART3(void) D_SERVE_UART3// using 3
{
L0_uart3_IntRIClear(); //清除接收中断标志
ts_uart[uNum3].t->reg = L0_uartN_get(uNum3);
ts_uart[uNum3].tp_handler(ts_uart[uNum3].t);
//ts_uart[uNum3].tp_handler(ts_uart[uNum3].t);
//L1_s2b_PH4(ts_uart[uNum3].t);
//L0_timer4_start();
}
if(L0_uart3_IntTI())
if(L0_uart3_IntTI()) //如果是U0发送中断
{
if(L0_uart3_IntTI()) //如果是U0发送中断
L0_uart3_IntTIClear(); //清除发送中断标志
if(ts_uart[uNum3].p->max != ts_uart[uNum3].p->now)
{
L0_uart3_IntTIClear(); //清除发送中断标志
if(ts_uart[uNum3].p->max != ts_uart[uNum3].p->now)
{
L0_uartN_set(uNum3,ts_uart[uNum3].p->p[ts_uart[uNum3].p->now]);
ts_uart[uNum3].p->now ++;
}
else
{
ts_uart[uNum3].p->ok = D_ready;
ts_uart[uNum3].p->max = 0;
ts_uart[uNum3].p->now = 0;//可以发送下一个数据
S3BUF = ts_uart[uNum3].p->p[ts_uart[uNum3].p->now];
//L0_uartN_set(uNum3,ts_uart[uNum3].p->p[ts_uart[uNum3].p->now]);
ts_uart[uNum3].p->now ++;
}
else
{
ts_uart[uNum3].p->ok = D_ready;
ts_uart[uNum3].p->max = 0;
ts_uart[uNum3].p->now = 0;//可以发送下一个数据
#if (D_UART3_485_TYPE != TYPE_485_NONE)
D_UART3_485_RX() //切换到接收状态
#endif
}
}
}
NOP(); NOP(); NOP();
NOP(); NOP(); NOP();
}
#if 0
void timer4_isrHanddle(void) D_SERVE_TIMER4
{
struct _tp_handler_x *p = &s_uart3_rec;
@ -181,5 +200,5 @@ void timer4_isrHanddle(void) D_SERVE_TIMER4
}
L0_timer4_stop();
}
#endif

2
source/msp/msp_uart_x.h

@ -70,7 +70,7 @@ typedef struct _ts_uart0_send_buf_
vU16 max; /// 当前buf的最大值,也就是需要发送的长度
vU32 over; /// 结束等待标志,over累加到某个值时,结束等待
vU8 ok; /// 发送完成标志
vU8 buf[D_UART_send_buf_max + 1];
vU8 buf[D_UART_send_buf_max + 6];
/// U8 bufhex[D_UART_send_buf_max*3];
/// U8 buf2[D_send_buf2_max];
vU8 buf3[D_UART_send_buf2_max];

184
source/msp/nouse/msp_uart3.c

@ -1,184 +0,0 @@
//////////////////////////////////////////////////////////////////////////
/// COPYRIGHT NOTICE
/// Copyright (c) 2015, 传控科技
/// All rights reserved.
///
/// @file main.c
/// @brief main app
///
///(本文件实现的功能的详述)
///
/// @version 1.1 CCsens technology
/// @author CC
/// @date 20150102
///
///
/// 修订说明:最初版本
/// Modified by:
/// Modified date:
/// Version:
/// Descriptions:
// 20160413 CC-ACC-VH02
// 连接至 J22 RXD0 TXD0
//P5_DIR &= ~BITN1; //p5.1输出TXD
//P5_DIR |= BITN0; //p5.0输入RXD
//P5_SEL0 &= ~(BITN0 +BITN1); //设置P5.0 P5.1为UART0 RXD TXD
//P5_SEL1 |= BITN0 +BITN1;
/*****************************************************************************
update by cc @201700110
.
clib/clib.c:
(线),
(lcd等固屏输出的)使
void Lc_print(void (*L0pf_send_uc)(char ww), char *dat,...)
-----------------------------------------------------------------------------------------
uartcom/Uprotocol2app
uart口来对应
typedef struct _ts_lcm_pro_; ? LCM的协议------------
L3_UARTcom0_exp_protocol
-----------------------------------------------------------------------------------------
uartcom/urec2protocol:
struct _s_uart_rec_ ()------struct _s_uart_rec_
void L1_uart_2buf(struct _s_uart_rec_ *p)
--------------------------------------------------------------------------------------------
msp/uartx.c cpu相关
L0_UART0_Init
UART0_IRQHandler
L0_Usend_uc------UserDef
-----------------------------------------------------------------------------------------
********************************************************************************/
#include "../msp/msp_uart3.h"
#include "../msp/time.h"
#include <stdio.h>
static volatile Ts_uart_send_buf idata ts_uart3_send_shop;
struct _tp_handler_x s_uart3_rec;
TS_PH4_modbus s_uart3_ack;
void L0_uart3_init(void)
{
//#if(MainFre_11M == D_sys_MainFre) //115200bps@11.0592MHz
// S3CON = 0x10; //8位数据,可变波特率
// S3CON |= 0x40; //串口3选择定时器3为波特率发生器
// T4T3M |= 0x02; //定时器3时钟为Fosc,即1T
// T3L = 0xE8; //设定定时初值
// T3H = 0xFF; //设定定时初值
// T4T3M |= 0x08; //启动定时器3
//#elif (MainFre_22M == D_sys_MainFre) //115200bps@22.1184MHz
// S3CON = 0x10; //8位数据,可变波特率
// S3CON |= 0x40; //串口3选择定时器3为波特率发生器
// T4T3M |= 0x02; //定时器3时钟为Fosc,即1T
// T3L = 0xD0; //设定定时初值
// T3H = 0xFF; //设定定时初值
// T4T3M |= 0x08; //启动定时器3
//#endif
#if 0
S3CON = 0x10; //8位数据,可变波特率
S3CON &= 0xBF; //串口3选择定时器2为波特率发生器
AUXR |= 0x04; //定时器时钟1T模式
T2L = 0xD0; //设置定时初始值
T2H = 0xFF; //设置定时初始值
AUXR |= 0x10; //定时器2开始计时
#endif
//512000
S3CON = 0x10; //8位数据,可变波特率
S3CON |= 0x40; //串口3选择定时器3为波特率发生器
T4T3M &= 0xFD; //定时器时钟12T模式
T3L = 0xFF; //设置定时初始值
T3H = 0xFF; //设置定时初始值
T4T3M |= 0x08; //定时器3开始计时
}
void L0_uart3_buf_init(void)
{
ts_uart[uNum3].p = &ts_uart3_send_shop;
ts_uart[uNum3].p->now = 0;
ts_uart[uNum3].p->ok = D_ready;
ts_uart[uNum3].t = &s_uart3_rec;
ts_uart[uNum3].t->head = 0;
ts_uart[uNum3].t->ok = 0;
ts_uart[uNum3].tp_handler = L1_s2b_PH4;
ts_uart[uNum3].ack = (U8*)&s_uart3_ack;
L0_uart3_init();
//D_uart3_ES_INT_OPEN(); //打开串口中断
D_uart3_ES_INT(1); //打开串口中断
#if (D_UART3_485_TYPE != TYPE_485_NONE)
D_UART3_485_RX() //默认处于接收状态
#endif
}
void L0_uart3_sendArray(U8 * buf, U16 len)
{
//#if (D_UART3_485_TYPE != TYPE_485_NONE)
// D_UART3_485_TX() //切换到输出状态
//#endif
L0_uartN_sendArray(uNum3,buf,len);
}
/*************************************************
UART
*************************************************/
#define D_SERVE_UART3 interrupt 17
void INTERRUPT_UART3(void) D_SERVE_UART3// using 3
{
NOP(); NOP(); NOP();
if(L0_uart3_IntRI()) //如果是U0接收中断
{
L0_uart3_IntRIClear(); //清除接收中断标志
ts_uart[uNum3].t->reg = L0_uartN_get(uNum3);
ts_uart[uNum3].tp_handler(ts_uart[uNum3].t);
//L0_timer4_start();
}
if(L0_uart3_IntTI())
{
if(L0_uart3_IntTI()) //如果是U0发送中断
{
L0_uart3_IntTIClear(); //清除发送中断标志
if(ts_uart[uNum3].p->max != ts_uart[uNum3].p->now)
{
L0_uartN_set(uNum3,ts_uart[uNum3].p->p[ts_uart[uNum3].p->now]);
ts_uart[uNum3].p->now ++;
}
else
{
ts_uart[uNum3].p->ok = D_ready;
ts_uart[uNum3].p->max = 0;
ts_uart[uNum3].p->now = 0;//可以发送下一个数据
#if (D_UART3_485_TYPE != TYPE_485_NONE)
D_UART3_485_RX() //切换到接收状态
#endif
}
}
}
NOP(); NOP(); NOP();
}
void timer4_isrHanddle(void) D_SERVE_TIMER4
{
struct _tp_handler_x *p = &s_uart3_rec;
if((p->head == 1) && (p->num >= D_s_modbus_min))
{
p->head = 0;
crc16(p->crc,p->buf,p->num - 2); //校验CRC
if(p->crc[0] == p->buf[p->num-2] && p->crc[1] == p->buf[p->num-1])
{
if(p->ok == 0)
{
p->ok = 1;
}
}
//LED0 ^= 1;
}
L0_timer4_stop();
}

93
source/msp/nouse/msp_uart3.h

@ -1,93 +0,0 @@
//////////////////////////////////////////////////////////////////////////
/// COPYRIGHT NOTICE
/// Copyright (c) 2015, 传控科技
/// All rights reserved.
///
/// @file main.c
/// @brief main app
///
///(本文件实现的功能的详述)
///
/// @version 1.1 CCsens technology
/// @author CC
/// @date 20150102
///
///
/// 修订说明:最初版本
/// Modified by:
/// Modified date:
/// Version:
/// Descriptions:
//////////////////////////////////////////////////////////////////////////
/*****************************************************************************
update by cc @201700110
.
clib/clib.c:
(线),
(lcd等固屏输出的)使
void Lc_print(void (*L0pf_send_uc)(char ww), char *dat,...)
-----------------------------------------------------------------------------------------
uartcom/Uprotocol2app
uart口来对应
typedef struct _ts_lcm_pro_; ? LCM的协议------------
L3_UARTcom0_exp_protocol
-----------------------------------------------------------------------------------------
uartcom/urec2protocol:
struct _s_uart_rec_ ()------struct _s_uart_rec_
void L1_uart_2buf(struct _s_uart_rec_ *p)
--------------------------------------------------------------------------------------------
msp/uartx.c cpu相关
L0_uart3_Init
uart3_IRQHandler
L0_Usend_uc------UserDef
-----------------------------------------------------------------------------------------
********************************************************************************/
#ifndef _uart3_H
#define _uart3_H
#include "../bsp/bsp_config.h"
#include "../tpc/modbus.h"
#include "msp_uart_x.h"
#define uNum3 2
//#define S4SM0 BITN7
#define D_uart3_ES_INT(x) (x) ? (BITN_1(IE2,ES3)) : (BITN_0(IE2,ES3))
//#define D_uart3_ES_INT_CLOSE() BITN_0(IE2,ES3)
//#define D_uart3_ES_INT_OPEN() BITN_1(IE2,ES3)
#define L0_uart3_IntRI() (S3CON & S3RI)//BITN_G(SCON,U0RI)
#define L0_uart3_IntTI() (S3CON & S3TI)//BITN_G(SCON,U0TI)
#define L0_uart3_IntRIClear(); BITN_0(S3CON,S3RI)
#define L0_uart3_IntTIClear(); BITN_0(S3CON,S3TI)
#define L0_uart3_set(x) S3BUF = (x);
#define L0_uart3_get() (S3BUF)
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
extern void L0_uart3_buf_init(void);
extern void L0_uart3_sendArray(U8 * buf, U16 len);
#define L0_uart3_uc(X) L0_uartN_uc(uNum3,X)
#define L0_uart3_us(X) L0_uartN_us(uNum3,X)
#define L0_uart3_ul(X) L0_uartN_ul(uNum3,X)
#define L0_uart3_0d0a() L0_uartN_0d0a(uNum3)
#define L0_uart3_uchex(X) L0_uartN_uchex(uNum3,X)
#define L0_uart3_ushex(X) L0_uartN_ushex(uNum3,X)
#define L0_uart3_ulhex(X) L0_uartN_ulhex(uNum3,X)
#define L0_uart3_sendstr(buf) L0_uartN_sendstr(uNum3,buf)
#define L1_uart3_uchexArray(buf) L1_uartN_uchexArray(uNum3,buf)
extern TP_Handler_X s_uart3_rec;
extern TS_PH4_modbus s_uart3_ack;
#endif //#ifndef _uart3_H

2
source/tpc/ccmodbus.h

@ -109,7 +109,7 @@ typedef struct
extern U8 L3_pack_ccmodbus(TS_PH3_ccmodbus *pccmodbus, CCMD_SLAVER_INFO *slaver_info);
//extern U16 L3_ccmodbus_slaver_ack(TS_PH3_ccmodbus *pccmodbus,TS_PH3_ccmodbus *pModbusAck);
extern U16 L3_ccmodbus_slaver_ack(TS_PH3_ccmodbus *pccmodbus,TS_PH3_ccmodbus *pModbusAck);
//extern void L3_ccmodbus_master_handler(TS_PH3_ccmodbus *pmodbus,MD_SLAVER_INFO *p_slaver_info);
extern void L1_s2b_PH3(TS_Handle_PH3 *p);// reentrant;

3
source/tpc/modbus.h

@ -101,7 +101,8 @@ typedef struct
}TS_Handle_PH4;
#endif
extern U8 L3_pack_modbus(TS_PH4_modbus *pmodbus, MD_SLAVER_INFO *slaver_info);
//extern U8 L3_pack_modbusack(TS_PH4_modbus *pmodbus ,U8 slaver, U8 oper, U8 bufsize);
extern U16 L3_modbus_slaver_ack(TS_PH4_modbus *pmodbus,TS_PH4_modbus *pModbusAck);
extern void L3_modbus_master_handler(TS_PH4_modbus *pmodbus,MD_SLAVER_INFO *p_slaver_info);
extern void L1_s2b_PH4(struct _tp_handler_x *p);

2
source/tpc/tpc_x.h

@ -1,4 +1,4 @@
#ifndef TPC_CONFIG_H
#ifndef TPC_CONFIG_H
#define TPC_CONFIG_H
#include "../bsp/bsp_config.h"

Loading…
Cancel
Save