×
单片机 > 单片机程序设计 > 详情

pic 16 f1947 两路usart

发布时间:2024-05-03 发布时间:
|

晶振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;
}
}
}



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32中断向量表的位置.重定向