|
@ -55,11 +55,13 @@ msp/uartx.c 底层代码 和cpu相关 缓存发送也放在里面 |
|
|
----------------------------------------------------------------------------------------- |
|
|
----------------------------------------------------------------------------------------- |
|
|
********************************************************************************/ |
|
|
********************************************************************************/ |
|
|
#include "uart4.h" |
|
|
#include "uart4.h" |
|
|
|
|
|
#include "../tpc/debug.h" |
|
|
|
|
|
|
|
|
//发送缓冲区
|
|
|
//发送缓冲区
|
|
|
static volatile Ts_uart_send_buf idata ts_uart_send_buf; |
|
|
static volatile Ts_uart_send_buf idata ts_uart_send_buf; |
|
|
//接收缓冲区最多存放16个字符,这个值尽量小,但要大于实际处理协议的缓冲区大小
|
|
|
//接收缓冲区最多存放16个字符,这个值尽量小,但要大于实际处理协议的缓冲区大小
|
|
|
static U8 uart4_recv_buf[16]; |
|
|
#define RECV_BUF_SIZE 32 |
|
|
|
|
|
static U8 uart4_recv_buf[RECV_BUF_SIZE]; |
|
|
Ts_uart_recv_buf ts_uart4_recv_buf; |
|
|
Ts_uart_recv_buf ts_uart4_recv_buf; |
|
|
|
|
|
|
|
|
//#define FOSC 11059200L //系统频率
|
|
|
//#define FOSC 11059200L //系统频率
|
|
@ -95,16 +97,24 @@ void L0_uart4_init(void)//115200bps@11.0592MHz |
|
|
|
|
|
|
|
|
void L0_uart4_buf_init(void) |
|
|
void L0_uart4_buf_init(void) |
|
|
{ |
|
|
{ |
|
|
|
|
|
//初始化协议发送缓冲区
|
|
|
ts_uart[uNum4].p = &ts_uart_send_buf; |
|
|
ts_uart[uNum4].p = &ts_uart_send_buf; |
|
|
ts_uart[uNum4].p->now = 0; |
|
|
ts_uart[uNum4].p->now = 0; |
|
|
ts_uart[uNum4].p->ok = D_ready; |
|
|
ts_uart[uNum4].p->ok = D_ready; |
|
|
|
|
|
|
|
|
|
|
|
//初始化协议接收缓冲区
|
|
|
ts_uart[uNum4].t = &ts_uart4_recv_buf; |
|
|
ts_uart[uNum4].t = &ts_uart4_recv_buf; |
|
|
ts_uart[uNum4].t->buf = uart4_recv_buf; |
|
|
ts_uart[uNum4].t->buf = uart4_recv_buf; |
|
|
ts_uart[uNum4].t->head_0 = D_CMD_Filter1_ff; |
|
|
|
|
|
ts_uart[uNum4].t->head_1 = D_CMD_Filter2_fe; |
|
|
|
|
|
ts_uart[uNum4].t->head = 0; |
|
|
ts_uart[uNum4].t->head = 0; |
|
|
ts_uart[uNum4].t->ok = 0; |
|
|
ts_uart[uNum4].t->ok = 0; |
|
|
ts_uart[uNum4].tp_handler = L1_s2b_PH3; |
|
|
|
|
|
|
|
|
//串口协议解析专用字段
|
|
|
|
|
|
ts_uart[uNum4].t->head_0 = 0xAA; |
|
|
|
|
|
ts_uart[uNum4].t->head_1 = 0x55; |
|
|
|
|
|
ts_uart[uNum4].t->maxnum = RECV_BUF_SIZE; |
|
|
|
|
|
ts_uart[uNum4].tp_handler = L1_s2b_485; |
|
|
|
|
|
|
|
|
|
|
|
//串口初始化
|
|
|
L0_uart4_init(); |
|
|
L0_uart4_init(); |
|
|
D_uart4_ES_INT(1); //打开串口中断
|
|
|
D_uart4_ES_INT(1); //打开串口中断
|
|
|
|
|
|
|
|
@ -134,7 +144,9 @@ void INTERRUPT_uart4(void) D_SERVE_uart4// using 2 |
|
|
{ |
|
|
{ |
|
|
L0_uart4_IntRIClear(); //清除接收中断标志
|
|
|
L0_uart4_IntRIClear(); //清除接收中断标志
|
|
|
ts_uart[uNum4].t->reg = L0_uartN_get(uNum4); |
|
|
ts_uart[uNum4].t->reg = L0_uartN_get(uNum4); |
|
|
ts_uart[uNum4].tp_handler(ts_uart[uNum4].t); |
|
|
if(ts_uart[uNum4].tp_handler != NULL){ |
|
|
|
|
|
ts_uart[uNum4].tp_handler(ts_uart[uNum4].t); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
if(L0_uart4_IntTI()) //如果是U0发送中断
|
|
|
if(L0_uart4_IntTI()) //如果是U0发送中断
|
|
|
{ |
|
|
{ |
|
@ -152,7 +164,6 @@ void INTERRUPT_uart4(void) D_SERVE_uart4// using 2 |
|
|
#if (D_UART4_485_TYPE != TYPE_485_NONE) |
|
|
#if (D_UART4_485_TYPE != TYPE_485_NONE) |
|
|
D_UART4_485_RX() //切换到接收状态
|
|
|
D_UART4_485_RX() //切换到接收状态
|
|
|
#endif |
|
|
#endif |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
//NOP(); NOP(); NOP();
|
|
|
//NOP(); NOP(); NOP();
|
|
|