|
@ -56,6 +56,7 @@ msp/uartx.c 底层代码 和cpu相关 缓存发送也放在里面 |
|
|
********************************************************************************/ |
|
|
********************************************************************************/ |
|
|
#include "uart2.h" |
|
|
#include "uart2.h" |
|
|
#include "../bsp/bsp_485.h" |
|
|
#include "../bsp/bsp_485.h" |
|
|
|
|
|
#include "../app/app_common.h" |
|
|
|
|
|
|
|
|
struct _s_uart2_send_buf_ s_uart2_send_shop; |
|
|
struct _s_uart2_send_buf_ s_uart2_send_shop; |
|
|
struct _s_uart2_send_buf_ s_uart2_send_depot; |
|
|
struct _s_uart2_send_buf_ s_uart2_send_depot; |
|
@ -165,6 +166,7 @@ void INTERRUPT_uart2(void) D_SERVE_uart2// using 2 |
|
|
/// output: 对应的结构体变量中携带 缓存buf和协议ok的标志
|
|
|
/// output: 对应的结构体变量中携带 缓存buf和协议ok的标志
|
|
|
//s_uart2_rec.reg = L0_uart2_get();
|
|
|
//s_uart2_rec.reg = L0_uart2_get();
|
|
|
//s_uart2_rec.ok = 1;
|
|
|
//s_uart2_rec.ok = 1;
|
|
|
|
|
|
G.modbusstmp = s_nos_tick.t_5ms; |
|
|
(*Lp0_uart2_fun)(L0_uart2_get()); |
|
|
(*Lp0_uart2_fun)(L0_uart2_get()); |
|
|
|
|
|
|
|
|
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
|
|
|
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
|
|
@ -194,44 +196,40 @@ void INTERRUPT_uart2(void) D_SERVE_uart2// using 2 |
|
|
D_uart2_ES_INT_OPEN(); |
|
|
D_uart2_ES_INT_OPEN(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
#if 0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void L0_uart2_0d0a(void) |
|
|
void timer0_isrHanddle (void) interrupt 1 |
|
|
{ |
|
|
|
|
|
s_uart2_send_depot.max = 2; |
|
|
|
|
|
s_uart2_send_depot.buf[0] = 0x0d; |
|
|
|
|
|
s_uart2_send_depot.buf[1] = 0x0a; |
|
|
|
|
|
s_uart2_send_depot.p = s_uart2_send_depot.buf; |
|
|
|
|
|
L0_uart2_sendbuf(); |
|
|
|
|
|
} |
|
|
|
|
|
// L0_uart2_uc(cguHex2Char[D_uc_low(s->sec)][0]);
|
|
|
|
|
|
void L0_uart2_uchex(U8 ww) |
|
|
|
|
|
{ |
|
|
{ |
|
|
s_uart2_send_depot.max = 2; |
|
|
NOP(); |
|
|
s_uart2_send_depot.buf[0] = cguHex2Char[D_uc_low(ww)][1]; |
|
|
TF0 = 0; |
|
|
s_uart2_send_depot.buf[1] = cguHex2Char[D_uc_high(ww)][1]; |
|
|
|
|
|
s_uart2_send_depot.p = s_uart2_send_depot.buf; |
|
|
|
|
|
L0_uart2_sendbuf(); |
|
|
|
|
|
} |
|
|
|
|
|
void L0_uart2_ulhex(vU32 ww) |
|
|
|
|
|
{ |
|
|
|
|
|
U_U32 ultemp; |
|
|
|
|
|
ultemp.dWord = ww; |
|
|
|
|
|
L0_uart2_uchex(ultemp.BYTE4.byte0); |
|
|
|
|
|
L0_uart2_uchex(ultemp.BYTE4.byte1); |
|
|
|
|
|
L0_uart2_uchex(ultemp.BYTE4.byte2); |
|
|
|
|
|
L0_uart2_uchex(ultemp.BYTE4.byte3); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void L0_uart2_sendstr(U8 *str) |
|
|
//modbus协议处理
|
|
|
{ |
|
|
if(s_uart2_rec.head == 1 && G.modbusstmp - s_nos_tick.t_5ms >= 1) //收到一条协议
|
|
|
//L0_uart2_sendbuf(str,strlen(str));
|
|
|
{ |
|
|
s_uart2_send_depot.max = strlen(str); |
|
|
s_uart2_rec.head = 0; |
|
|
s_uart2_send_depot.p = str; |
|
|
crc16_irq(s_uart2_rec.crc,s_uart2_rec.buf,s_uart2_rec.num - 2); |
|
|
L0_uart2_sendbuf(); |
|
|
if(s_uart2_rec.crc[0] == s_uart2_rec.buf[s_uart2_rec.num-2] && s_uart2_rec.crc[1] == s_uart2_rec.buf[s_uart2_rec.num-1]) |
|
|
} |
|
|
{ |
|
|
|
|
|
if(s_uart2_rec.ok == 0) |
|
|
|
|
|
{ |
|
|
|
|
|
s_uart2_rec.ok = 1; |
|
|
|
|
|
} |
|
|
|
|
|
//D_P32_REV();
|
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//tick处理
|
|
|
|
|
|
#if 0 |
|
|
|
|
|
/// 65535*65535 /3600/24/365=139nian/s=1.39nian/10ms
|
|
|
|
|
|
///相当于1.39年后t_10ms 溢出,对于电池供电的系统而言 完全可以满足
|
|
|
|
|
|
// 4,294,836,225 = 65535*65535 ;3600*24*60*60 = 31,536,000秒/年
|
|
|
|
|
|
s_nos_tick.t_10ms ++;//D_led_D1_REV(); 20160522 验证
|
|
|
|
|
|
#else |
|
|
|
|
|
L1_tick_tick(); ///系统中的1sflag 和以10ms为颗粒的延时使用 为tdelay服务
|
|
|
#endif |
|
|
#endif |
|
|
|
|
|
NOP(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|