#include "DSP28_Device.h"
//子程序原型
void scia_init(void);
unsigned int Send_Flag;
unsigned int Sci_VarRx[100];
unsigned i,j;
void main()
{
//Step1:初始化系统控制寄存器,PLL,看门狗,时钟位默认状态
//参照DSP28_SysCtrl.c
InitSysCtrl();
//Step2:设置GPIO功能
EALLOW;
GpioMuxRegs.GPFMUX.all=0x0030; //设置相应的引脚为SCI引脚
//设置口FMUX-x000 0000 0011 0000
EDIS;
//Step3:初始化中断向量表(PIE向量表)
//参照DSP28_PieVect.c文件
InitPieVectTable();
//Step4:禁止和清除所有CPU中断
DINT;
IER=0x0000;
IFR=0x0000;
//Step6:重新分配中断向量,使能中断
scia_init(); //初始化SCI-A
//Step7:使用DSP向计算机发送数据,用串口调试助手观察现象
for(j=0;j<100;j++)
{
SciaRegs.SCITXBUF = 55;
while(SciaRegs.SCICTL2.bit.TXRDY == 0)
{}
}
SciaRegs.SCICTL1.bit.TXENA = 0;
}
//SCIA串口初始化程序,DLB,8位字,通讯速率设置为0x000F(默认值),
//1个停止位,无校验位
void scia_init()
{
//系统时钟及其他初始化函数在InitSysCtrl()中实现
SciaRegs.SCICCR.all = 0x0007; //一个停止位,禁止字测试模式
//无校验,8位字符
//异步模式,采用空闲线协议
SciaRegs.SCICTL1.all = 0x0003; //使能TX,RX引脚和SCICLK
//禁止RX ERR,SLEEP,TXWAKE
SciaRegs.SCICTL2.all = 0x00000; //禁止TXRDY、RXRDY/BRKDT中断
SciaRegs.SCIHBAUD = 0x0000; //19200 sysclk=150MHz
SciaRegs.SCILBAUD = 0x00F3; //LSPCLK时钟频率37.5MHz
SciaRegs.SCICCR.bit.LOOPBKENA = 0; //禁止字测试模式
SciaRegs.SCICTL1.all = 0x0023; //使SCI退出复位状态
PieCtrl.PIEIER9.bit.INTx1 = 1; //使能SCIA接收中断
PieCtrl.PIEIER9.bit.INTx2 = 1; //使能SCIA发送中断
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>