📄 mysci.c
字号:
#include "DSP281x_Device.h"
#include "DSP281x_Examples.h"
void scia_loopback_init(void);
void scia_fifo_init(void);
void scia_xmit(int a);
//void error(int);
interrupt void scia_rx_isr(void);
interrupt void scia_tx_isr(void);
//Uint16 LoopCount;
//Uint16 ErrorCount;
void main(void)
{
//Uint16 SendChar;
Uint16 ReceivedChar;
//初始化 系统寄存器
// In the DSP281x_SysCtrl.c file.
InitSysCtrl();
//设置GPIO
//in the DSP281x_Gpio.c file.
EALLOW;
GpioMuxRegs.GPFMUX.all=0x0030; // 选择GPIOs作为Sci口
// 设置 F MUX - x000 0000 0011 0000
EDIS;
// the DSP28_DefaultIsr.c file.
// 初始化中断向量表,清楚所有CPU中断
DINT;
IER = 0x0000;
IFR = 0x0000;
//初始化PIE寄存器
// In DSP281x_PieVect.c.
InitPieVectTable();
//启动中断
// In the DSP281x_PieCtrl.c file.
EnableInterrupts();
//LoopCount = 0;
//ErrorCount = 0;
scia_fifo_init();
scia_loopback_init();
// SendChar = 1;
for(;;)
{
// scia_xmit(SendChar);
while(SciaRegs.SCIFFRX.bit.RXFIFST !=1) { } // 等待XRDY =1这时接受寄存器为空
ReceivedChar = SciaRegs.SCIRXBUF.all;
//if(ReceivedChar != SendChar) error(1);
//ReceivedChar++ ;
ReceivedChar=ReceivedChar+2;
ReceivedChar &= 0x00FF;
scia_xmit(ReceivedChar);
}
}
//void error(int ErrorFlag)
//{
// ErrorCount++;
//}
void scia_loopback_init()
{
SciaRegs.SCICCR.all =0x0007; // 1个停止位,无自循环
// 无奇偶效验位,8 bits,
SciaRegs.SCICTL1.all =0x0003; // 启动 TX, RX, 启动SCICLK,
// 静止 RX ERR, SLEEP, TXWAKE
SciaRegs.SCICTL2.all =0x0003;
SciaRegs.SCICTL2.bit.TXINTENA =1;
SciaRegs.SCICTL2.bit.RXBKINTENA =1;
SciaRegs.SCIHBAUD =0x0001; //波特率设置
SciaRegs.SCILBAUD =0x00C3;
SciaRegs.SCICCR.bit.LOOPBKENA =0; // 静止自测试循环模式
SciaRegs.SCICTL1.all =0x0023; // 使SCI退出恢复模式
}
void scia_xmit(int a)
{
SciaRegs.SCITXBUF=a;
}
void scia_fifo_init()
{
SciaRegs.SCIFFTX.all=0xE040;
SciaRegs.SCIFFRX.all=0x204f;
SciaRegs.SCIFFCT.all=0x0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -