配置如下
/*
* sci.c
*
* Created on: 2020年7月25日
* Author: 25446
*/
#include "RS485.h"
//interrupt void ScibInterrupt();
void RS485_Init(Uint16 baud)
{
EALLOW;
CpuSysRegs.PCLKCR7.bit.SCI_B=1; //使能GPIO时钟
EDIS;
//GPIO 初始化
EALLOW;
GpioCtrlRegs.GPAPUD.bit.GPIO18=0; //开启上拉模式
GpioCtrlRegs.GPAPUD.bit.GPIO19=0; //开启上拉模式
GpioCtrlRegs.GPADIR.bit.GPIO19=0; //RX设置为输入
GpioCtrlRegs.GPADIR.bit.GPIO18=1; //TX设置为输出
GpioCtrlRegs.GPAGMUX2.bit.GPIO18=0;
GpioCtrlRegs.GPAGMUX2.bit.GPIO19=0;
GpioCtrlRegs.GPAMUX2.bit.GPIO18=2;//复用为 SCIB 的输出
GpioCtrlRegs.GPAMUX2.bit.GPIO19=2;//复用为 SCIB 的输入
EDIS;
//GPIO初始化
EALLOW;
GpioCtrlRegs.GPBMUX2.bit.GPIO57=0;
GpioCtrlRegs.GPBDIR.bit.GPIO57=1;
GpioCtrlRegs.GPBPUD.bit.GPIO57=0;
GpioDataRegs.GPBSET.bit.GPIO57=1;
EDIS;
EALLOW;
//数据格式配置
ScibRegs.SCICCR.all=0x0007; //一位停止位 无奇偶校验 8位数据 无地址
//中断设置
ScibRegs.SCICTL1.all =0x0003; //SCI发送接收使能 唤醒SCI
ScibRegs.SCICTL2.all=0x0003; //使能rx中断
ScibRegs.SCICTL2.bit.TXINTENA =1; //禁止发送中断
ScibRegs.SCICTL2.bit.RXBKINTENA =1; //使能接收中断
ScibRegs.SCICTL1.all =0x0023; //SCI发送接收使能 唤醒SCI
//配置波特率
ScibRegs.SCIHBAUD.all=0x0000;
ScibRegs.SCILBAUD.all=0x0035; //设置波特率为9600
SciaRegs.SCIFFTX.all=0xE040;
SciaRegs.SCIFFRX.all=0x2044;
SciaRegs.SCIFFCT.all=0x0;
EDIS;
}
void RS485_SendByte(int data) //发送单个
{
//while(ScibRegs.SCICTL2.bit.TXRDY!=1);
while(ScibRegs.SCIFFTX.bit.TXFFST!=0);
ScibRegs.SCITXBUF.all=data; //0-7位数据
}
void RS485_SendString(char * msg) //发送字符串
{
int i;
i = 0;
while(msg[i] != '\0')
{
RS485_SendByte(msg[i]);
i++;
}
}