

配置如下
/*
* 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++;
}
}
uj5u.com熱心網友回復:
pc端一直在發送資料轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/15555.html
標籤:單片機/工控
上一篇:k210編譯不成功
