You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.0 KiB
88 lines
2.0 KiB
#include "uart2.h"
|
|
#include "uartx.h"
|
|
|
|
//TS_Handle_PH3 s_uart2_tcp_rec;
|
|
|
|
void L0_uart2_init(void)
|
|
{
|
|
#if (MainFre_11M == D_sys_MainFre) // 115200bps@11.0592MHz
|
|
S2CON = 0x50;
|
|
AUXR |= 0x04;
|
|
T2L = 0xE8;
|
|
T2H = 0xFF;
|
|
AUXR |= 0x10;
|
|
|
|
#elif (MainFre_22M == D_sys_MainFre) //115200bps@22.1184MHz
|
|
S2CON = 0x50; //8???,?????
|
|
AUXR |= 0x04; //?????1T??
|
|
T2L = 0xD0; //???????
|
|
T2H = 0xFF; //???????
|
|
AUXR |= 0x10; //???2????
|
|
#endif
|
|
}
|
|
|
|
void L0_uart2_buf_init(void)
|
|
{
|
|
//定义发送缓冲区
|
|
ts_uart[uNum2].s.buf = ts_send_buf.s2;
|
|
ts_uart[uNum2].s.bufmax = D_send2_max;
|
|
ts_uart[uNum2].s.max = ts_uart[uNum2].s.now = 0;
|
|
ts_uart[uNum2].s.ok = D_ready;
|
|
|
|
//定义接收缓冲区
|
|
ts_uart[uNum2].r.buf = ts_recv_buf.r2;
|
|
ts_uart[uNum2].r.bufmax = D_recv2_max;
|
|
ts_uart[uNum2].r.head = 0;
|
|
ts_uart[uNum2].r.ok = 0;
|
|
ts_uart[uNum2].r.idle = 1;
|
|
ts_uart[uNum2].r.overtime_t = 0;
|
|
|
|
//定义接收处理协议
|
|
ts_uart[uNum2].tp_handler = L0_uartN_overtime_callback;
|
|
ts_uart[uNum2].uartx = uNum2;
|
|
|
|
//串口初始化
|
|
L0_uart2_init();
|
|
|
|
//打开串口中断
|
|
D_uart2_ES_INT(1);
|
|
|
|
//默认处于接收状态
|
|
// D_UART2_485_RX()
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*************************************************
|
|
UART 中断
|
|
*************************************************/
|
|
#define D_SERVE_uart2 interrupt 8
|
|
void INTERRUPT_uart2(void) D_SERVE_uart2 // using 2
|
|
{
|
|
NOP();NOP();NOP();
|
|
if (L0_uart2_IntRI()) //如果是U2接收中断
|
|
{
|
|
L0_uart2_IntRIClear(); //清除接收中断标志
|
|
ts_uart[uNum2].r.reg = S2BUF; //获取当前数据
|
|
L0_uartN_s2b(uNum2); //接收数据至缓冲区
|
|
}
|
|
if (L0_uart2_IntTI()) //如果是U0发送中断
|
|
{
|
|
L0_uart2_IntTIClear(); //清除发送中断标� ��
|
|
if (ts_uart[uNum2].s.max != ts_uart[uNum2].s.now)
|
|
{
|
|
S2BUF = ts_uart[uNum2].s.p[ts_uart[uNum2].s.now];
|
|
ts_uart[uNum2].s.now++;
|
|
}
|
|
else
|
|
{
|
|
ts_uart[uNum2].s.ok = D_ready;
|
|
ts_uart[uNum2].s.max = 0;
|
|
ts_uart[uNum2].s.now = 0; //可以发送下一个数据
|
|
// D_UART2_485_RX() //切换到接收状态
|
|
}
|
|
}
|
|
NOP();NOP();NOP();
|
|
}
|
|
|