晶振32M
void init_uart_1(void)//串口1 wifi串口 uart1
{
TRISCbits.TRISC6=1;
TRISCbits.TRISC7=1;
TX1STA=0X24; //txen=1 异步 brgh=1
RC1STA=0X90; // 使能串口 使能接收
BAUD1CON=0X60; //接收器空闲 电平不反向
BAUD1CONbits.BRG16=0;// 232 速率115200 使用高速波特率
SPBRG=16;//010; 9600 207 115200 16
RC1IE=0; //先不使能接收中断
TX1STAbits.TXEN=0x01; //发送使能
TX1IE=0;//禁止发送中断
PEIE=1;
//外部中断使能
GIE=1;
//总中断使能
}
void sendchar(unsigned char data)
{
while (!TX1STAbits.TRMT);
TX1REG = data;
}
void send(unsigned char *p)
{
unsigned char length=0;
length =strlen(p);
for (length;length>0;length--)
{
sendchar(*p);
p++;
}
}
void send_data(unsigned char *p)
{
unsigned char length=43;
for (length;length>0;length--)
{
sendchar(*p);
p++;
}
}
void init_uart_2(void)//逆变器数据 uart2
{
TRISGbits.TRISG1=1;
TRISGbits.TRISG2=1; //根据文档置1 为rx tx 口
ANSELGbits.ANSG1=0;
ANSELGbits.ANSG2=0;
// ANSELGbits.ANSELG=0;
/// AN15=0;AN14=0;
TX2STA=0X20; //txen=1 异步0 brgh=0
RC2STA=0X90;// 使能串口 使能接收
BAUD2CON=0X60;//接收器空闲 电平不反向
BAUD1CONbits.BRG16=0; //000
SP2BRGL=207;//2400
SP2BRGH=0;
RC2IE=0x01;
TX2STAbits.TXEN=0x00;
TX2IE=0x00;
PEIE=1;
//外部中断使能
GIE=1;
//总中断使能
// RT485=0;//485 处于接收状态
}
if((RC1IF==1)&&(RC1IE==1)) //中断处理
{
RC1IF=0;
if((RC1STAbits.FERR==1)||(RC1STAbits.OERR==1))
{
RC1STAbits.SPEN=0;
RC1STAbits.SPEN=1;
}
else
{
tempbuffer[rx_cont_1] = RC1REG;
rx_cont_1++;
wifi_rxcount=0;
}
}
if((RC2IF==1)&&(RC2IE==1))
{
RC2IF=0;
if((RC2STAbits.FERR==1)||(RC2STAbits.OERR==1))
{
RC2STAbits.SPEN=0;
RC2STAbits.SPEN=1;
}
else
{
rxbuffer_2[rx_cont_2] = RC2REG;
rx_cont_2++;
if(rx_cont_2==16)
{
rx_cont_2=0;
rxd_over = 1;
}
}
}