⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lpf.c

📁 实现TI28335串行通信SCI
💻 C
字号:
/*H*****************************************************************************
*
* $Archive:: /boards/28335eZdspUSB/28335eZdspUSBDiags/Target/28335eZdspUSBTest $
* $Revision:: 1                                                                $
* $Date:: 9/05/07 3:31p                                                        $
* $Author:: Shilpab                                                            $
*
* DESCRIPTION: eZdsp28335 Post
*
* NOTES:  
*     
* (C) Copyright 2007 by Spectrum Digital Incorporated
* All rights reserved
*
*H*****************************************************************************/
#define _lpf_C_

/*---- compilation control switches ----------------------------------------*/

/*****************************************************************************
* INCLUDE FILES
*****************************************************************************/
/*---- system and platform files -------------------------------------------*/

/*---- program files -------------------------------------------------------*/
#include "DSP2833x_Device.h"
#include "r28335cfg.h"
#include "r28335init.h"
#include "memtest.h"
#include "led.h"
int ReceivedChar[16]={0};//{'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5'};
unsigned char receive_flag=0;
extern void scia_xmit_fifo(void);
extern void scia_xmit(int a);

interrupt void SCITXINTA_ISR(void)     // SCI-A  none FIFO
{
	int i;
	for(i=0;i<16;i++)
	{
	     scia_xmit('b');   //SciaRegs.SCITXBUF='b'; 
	}
	SciaRegs.SCIFFTX.bit.TXFFINTCLR=1; //Clear TXFFINT
	PieCtrlRegs.PIEACK.bit.ACK9 = 1;
	EINT;
}

interrupt void SCIRXINTA_ISR(void)     // SCI-A   none FIFO
{   
   int i;
   for(i=0;i<16;i++)
   {
     ReceivedChar[i] = SciaRegs.SCIRXBUF.all & 0x00FF;
   }
    receive_flag=1;
    SciaRegs.SCIFFRX.bit.RXFFINTCLR=1; //Clear RXFFINT
	PieCtrlRegs.PIEACK.bit.ACK9 = 1;
	EINT;
}
/*F**************************************************************************
* NAME:  main 
*
* DESCRIPTION:
*
* NOTES:
*   
*F**************************************************************************/



void SCI_Init(void)
{
	SciaRegs.SCICCR.all =0x0007;   	// 1bit 停止位    无循环模式 
                                   	// 无极性,       字符长度:8 bits,
                                   	// 异步模式,     空闲线协议
	SciaRegs.SCICTL1.all =0x0003;  	// 使能 TX, RX, 内部 SCICLK, 
                                   	// 禁止 RX ERR, SLEEP, TXWAKE
	SciaRegs.SCIHBAUD = 487 >> 8 ;  // 波特率:9600(LSPCLK = 37.5MHz) ; 
	SciaRegs.SCILBAUD = 487 & 0x00FF;

	//FIFO disable
//	SciaRegs.SCICTL2.bit.TXINTENA = 1;	// 使能SCI发送中断 
//	SciaRegs.SCICTL2.bit.RXBKINTENA = 1;	 //使能SCI接受中断

	//FIFO enable 

	SciaRegs.SCIFFTX.all=0xE040+0x0000;  //0xE040 :FIFO enabled,TX FIFO INT disabled,TXFFIL4~0=0(0xE040 enable TXFIFO)
	SciaRegs.SCIFFRX.all=0x6060+0x0010;  //RX FIFO INT enabled, RXFFIL4~0=16  
	SciaRegs.SCIFFCT.all=0x0;	//FIFO Transfer Delay = 0

	SciaRegs.SCICTL1.all =0x0023;	    // 使SCI退出复位   
}     

void main(void)
{
	long i=0,j=0;  //延时变量
	DINT;
   	InitSysCtrl();	
	InitPieCtrl();  
    IER = 0x0000;
    IFR = 0x0000;	
    InitPieVectTable();
	XINTF_Init();		
    //CSM_unlock();	
    InitGpio();
	LED_Init();
	SCI_Init();

	EALLOW;	// This is needed to write to EALLOW protected registers
	//PieVectTable.SCITXINTA = &SCITXINTA_ISR;
	PieVectTable.SCIRXINTA = &SCIRXINTA_ISR;
	EDIS;   // This is needed to disable write to EALLOW protected registers

	/*开SCIA中断*/
	IER |= 0x100;
    //PieCtrlRegs.PIEIER9.bit.INTx2 = 1;  //发送中断
    PieCtrlRegs.PIEIER9.bit.INTx1 = 1;  //接受中断

    EINT;   // Enable Global interrupt INTM
    ERTM;	// Enable Global realtime interrupt DBGM 


	while(1)
    { 
	     for(i=0;i<100;i++)//delay
		 {
		     for(j=0;j<10000;j++);
		 }
		  if(receive_flag)
		  { 
		      receive_flag=0;
              scia_xmit_fifo();
		  }
		 LED_Toggle();
	}	

}				

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -