📄 rs485.c
字号:
#include "DSP28_Device.h"
#ifdef RS485
unsigned int Sci_VarRx[100];
//unsigned int Sci_VarTx[100];
unsigned int i,j;
unsigned int Send_Flag;
//unsigned int *GPBMUX = (unsigned int *)0x70c4;
//unsigned int *GPBDIR = (unsigned int *)0x70c5;
//unsigned int *GPBDAT = (unsigned int *)0x70e4;
unsigned int loop;
void main(void)
{
/*初始化系统*/
InitSysCtrl();
/*关中断*/
DINT;
IER = 0x0000;
IFR = 0x0000;
/*初始化PIE中断*/
InitPieCtrl();
/*初始化PIE中断矢量表*/
InitPieVectTable();
/*初始化SCIB寄存器*/
InitSci();
//初始化RS485OE
EALLOW;
GpioMuxRegs.GPBMUX.bit.TCLKINB_GPIOB12 = 0;
GpioMuxRegs.GPBDIR.bit.GPIOB12 = 1;
EDIS;
// *GPBMUX = (*GPBMUX) & 0xefff;
// *GPBDIR = (*GPBDIR) | 0x1000;
/*初始化变量*/
for(i = 0; i < 100; i++)
{
Sci_VarRx[i] = i;
}
i = 0;
j = 0;
Send_Flag = 0;
//开中断
EINT;
ERTM;
//接收
GpioDataRegs.GPBDAT.bit.GPIOB12 = 0;//使能接收
// *GPBDAT = *GPBDAT & 0xefff;
// GpioDataRegs.GPBDAT.bit.GPIOB12 = 0;
for(j = 0;j < 100;j++)
{
while(ScibRegs.SCIRXST.bit.RXRDY == 0);
if(ScibRegs.SCIRXST.bit.RXRDY == 1)
{
Sci_VarRx[j] = ScibRegs.SCIRXBUF.all;
}
// while(ScibRegs.SCIRXST.bit.RXRDY == 0);
// GpioDataRegs.GPBDAT.bit.GPIOB12 = 1;
}
//发送
for(i = 0;i < 100;i++)
{
while(ScibRegs.SCICTL2.bit.TXRDY == 0);
if(ScibRegs.SCICTL2.bit.TXRDY == 1)
{
GpioDataRegs.GPBDAT.bit.GPIOB12 = 1;//RS485OE = 1使能发送
ScibRegs.SCITXBUF = Sci_VarRx[i];
}
}
for(;;)
{
}
}
/* for(;;)
{
if((ScibRegs.SCICTL2.bit.TXRDY == 1) && (Send_Flag == 1))
{
GpioDataRegs.GPBDAT.bit.GPIOB12 = 1;//RS485OE = 1使能发送
ScibRegs.SCITXBUF = Sci_VarRx[i];
Send_Flag = 0;
i++;
if(i == 100)//if(i == j)
{
i = 0;
// j = 0;
}
for(loop = 0;loop < 100;loop++);
while(ScibRegs.SCICTL2.bit.TXRDY == 0);
GpioDataRegs.GPBDAT.bit.GPIOB12 = 0;//RS485OE = 0使能接收
}
if(ScibRegs.SCIRXST.bit.RXRDY == 1)
{
Sci_VarRx[j] = ScibRegs.SCIRXBUF.all;
Send_Flag = 1;
j++;
if(j == 100)
{
j = 0;
}
// while(ScibRegs.SCIRXST.bit.RXRDY == 0);
// GpioDataRegs.GPBDAT.bit.GPIOB12 = 1;
}
}
}
*/
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -