TMS320F28335: 与PC端通过串口调试助手485通信不成功

Part Number: TMS320F28335

与PC端通过串口调试助手485通信不成功,代码在CCS6中无错误无警告,在PC端用串口调试助手发送字,不能正常发送与接收,代码如下,求大佬们帮忙看一下,主函数,源文件,头文件

/*
* main.c
*
* Created on: 2018-3-21
* Author: Administrator
*/


#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
#include "DSP2833x_Examples.h" // DSP2833x Examples Include File

#include "leds.h"
#include "time.h"
#include "uart.h"
#include "rs485.h"

/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main()
{
Uint16 ReceivedChar;
char *msg;

InitSysCtrl();
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();

LED_Init();
TIM0_Init(150,200000);//200ms
RS485_Init(4800);
RS485_DIR_SETH;
DELAY_US(5);
msg = "\r\n*******welcome to prechin**********\0";
RS485_SendString(msg);

while(1)
{
msg = "\r\nEnter a character: \0";
RS485_SendString(msg);
DELAY_US(2);
RS485_DIR_SETL;
ScibRegs.SCICTL1.bit.SWRESET=0;
DELAY_US(2);
ScibRegs.SCICTL1.bit.SWRESET=1;
// Wait for inc character
while(ScibRegs.SCIRXST.bit.RXRDY !=1); // wait for XRDY =1 for empty state
// Get character
ReceivedChar = ScibRegs.SCIRXBUF.all;
RS485_DIR_SETH;
DELAY_US(5);
// Echo character back
msg = "you enter is:\0";
RS485_SendString(msg);
RS485_SendByte(ReceivedChar);
}
}

* rs485.c
*
* Created on: 2018-4-21
* Author: Administrator
*/


#include "rs485.h"


void RS485_Init(Uint32 baud)
{
unsigned char scihbaud=0;
unsigned char scilbaud=0;
Uint16 scibaud=0;

scibaud=37500000/(8*baud)-1;//计算波特率
scihbaud=scibaud>>8;
scilbaud=scibaud&0xff;


EALLOW;
SysCtrlRegs.PCLKCR0.bit.SCIBENCLK = 1; // SCI-B
EDIS;

InitSciGpio();

EALLOW;
//RS485_EN端口配置
GpioCtrlRegs.GPBMUX2.bit.GPIO61=0;
GpioCtrlRegs.GPBDIR.bit.GPIO61=1;
GpioCtrlRegs.GPBPUD.bit.GPIO61=0;
GpioDataRegs.GPBSET.bit.GPIO61=1;
EDIS;

// Note: Clocks were turned on to the SCIA peripheral
// in the InitSysCtrl() function
ScibRegs.SCICCR.all =0x0007; // 1 stop bit, No loopback
// No parity,8 char bits,
// async mode, idle-line protocol
ScibRegs.SCICTL1.all =0x0003; // enable TX, RX, internal SCICLK,
// Disable RX ERR, SLEEP, TXWAKE
ScibRegs.SCICTL2.all =0x0003;
ScibRegs.SCICTL2.bit.TXINTENA =1;
ScibRegs.SCICTL2.bit.RXBKINTENA =1;
ScibRegs.SCIHBAUD =scihbaud; // 9600 baud @LSPCLK = 37.5MHz.
ScibRegs.SCILBAUD =scilbaud;
ScibRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset

}

// Transmit a character from the SCI'
void RS485_SendByte(int a)
{
while (ScibRegs.SCICTL2.bit.TXEMPTY == 0);
ScibRegs.SCITXBUF=a;
}

void RS485_SendString(char * msg)
{
int i=0;

while(msg[i] != '\0')
{
RS485_SendByte(msg[i]);
i++;
}
}

* rs485.h
*
* Created on: 2018-4-21
* Author: Administrator
*/

#ifndef RS485_H_
#define RS485_H_

#include "DSP2833x_Device.h" // DSP2833x 头文件
#include "DSP2833x_Examples.h" // DSP2833x 例子相关头文件


#define RS485_DIR_SETH (GpioDataRegs.GPBSET.bit.GPIO61=1)
#define RS485_DIR_SETL (GpioDataRegs.GPBCLEAR.bit.GPIO61=1)
//#define RS485_DIR_SETH (GpioDataRegs.GPBSET.bit.GPIO34=1)
//#define RS485_DIR_SETL (GpioDataRegs.GPBCLEAR.bit.GPIO34=1)

void RS485_Init(Uint32 bound);
void RS485_SendByte(int a);
void RS485_SendString(char * msg);

void TIM0_Init(float Freq, float Period);
interrupt void TIM0_IRQn(void);
#endif /* RS485_H_ */