2812串口发送数据出现问题

2019-07-30 15:02发布

#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发送中断
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
meishizhaoshi
2019-07-30 16:19
现在的问题是用在PC上用串口提示助手能够接收到数据,但是误码,不知道为什么,那位高手给指点一下,感激!一个人摸索实在太熬人了!

一周热门 更多>