www.pudn.com > TMS320F2812Sci.rar > 905.c


 
#include "DSP28_Device.h" 
 
#define		LED1_ON		GpioDataRegs.GPFDAT.bit.GPIOF11=1 
#define		LED1_OFF	GpioDataRegs.GPFDAT.bit.GPIOF11=0 
 
int LedFlag = 1; 
 
unsigned int i, j; 
 
int rx, tx; 
int data; 
int WaitCnt = 0; 
 
void main(void) 
{ 
 
 
	/*初始化系统*/ 
	InitSysCtrl(); 
 
	/*关中断*/ 
	DINT; 
	IER = 0x0000; 
	IFR = 0x0000; 
 
	/*初始化PIE中断*/ 
	InitPieCtrl(); 
 
	/*初始化PIE中断矢量表*/ 
	InitPieVectTable();	 
	 
    /*初始化外设*/ 
	InitPeripherals(); 
     
    InitGpio(); 
     
    #if SCIA_INT 
	/*设置中断服务程序入口地址*/ 
	EALLOW;	// This is needed to write to EALLOW protected registers 
	PieVectTable.TXAINT = &SCITXINTA_ISR; 
	PieVectTable.RXAINT = &SCIRXINTA_ISR; 
	EDIS;   // This is needed to disable write to EALLOW protected registers 
	/*开中断*/ 
	IER |= M_INT9;	 
	#endif 
	 
	#if SCIB_INT 
	/*设置中断服务程序入口地址*/ 
	EALLOW;	// This is needed to write to EALLOW protected registers 
	PieVectTable.TXBINT = &SCITXINTB_ISR; 
	PieVectTable.RXBINT = &SCIRXINTB_ISR; 
	EDIS;   // This is needed to disable write to EALLOW protected registers 
	/*开中断*/ 
	IER |= M_INT9;	 
	#endif 
	EINT;   // Enable Global interrupt INTM 
	ERTM;	// Enable Global realtime interrupt DBGM 
	IFR = 0x0000; 
	 
	//Config Timer 
	ConfigCpuTimer(&CpuTimer0, 150, 500000);		//at 75ms period 
	StartCpuTimer0(); 
 
	PieCtrl.PIEIER1.bit.INTx7 = 1; 
 
	IER |= M_INT1; 
 
	EINT;   // Enable Global interrupt INTM 
	ERTM;	// Enable Global realtime interrupt DBGM 
	 
	IFR = 0x0000; 
	 
	for(WaitCnt = 0; WaitCnt < 4; WaitCnt ++)	//wait 7.5s for controller start 
	{ 
		while(SyncFlag == 0) 
		{ 
			//NOP wait for Sync; 
		} 
		SyncFlag = 0;	 
	} 
 
 
//	SendCommand(0); 
//	SendCommand(5);	 
 
	for(;;) 
	{ 
	 
		if(LedFlag == 1) 
		{ 
			LED1_ON; 
			LedFlag = 0; 
		} 
		else 
		{ 
			LED1_OFF; 
			LedFlag = 1; 
		} 
 
/* 
		//Process center computer command 
		RecvCmd(); 
		if(ReadAzCmd(&data) == 1) 
			SendEncoder(1, data); 
		if(ReadElCmd(&data) == 1) 
			SendEncoder(2, data); 
*/ 
 
		 
		//process key 
		if(SciRecv(1, &rx) == 1) 
		{ 
			tx = rx;//ProcessKey(); 
			if(tx != 0xFFFF) 
			{ 
				SciSend(2, tx); 
			} 
		} 
		 
		if(SciRecv(2, &rx) == 1) 
		{ 
			tx = rx;//ProcessKey(); 
			if(tx != 0xFFFF) 
			{ 
				SciSend(1, tx); 
			} 
		} 
		 
/*		if(SciRecv(2, &rx) == 1) 
		{ 
 
			if(rx == 1) 
			{ 
				ReadRDC(1); 
			} 
			if(rx == 4) 
			{ 
				ReadRDC(2); 
			} 
			if(rx == 0x12) 
			{ 
				WriteDigitalOutput(0xFF); 
			} 
			if(rx == 0x22) 
			{ 
				WriteDigitalOutput(0x00); 
			} 
			if(rx == 0x10) 
			{ 
				rx = ReadDigitalInput()>>8; 
			} 
			if(rx == 0x30) 
			{ 
//				SetVelocity(-100); 
				SendCommand(12); 
			} 
					 
			tx = rx; 
			SciSend(2, tx);	 
		} 
 
 
		if(KeyInput() == 1) 
		{ 
			SendEncoder(AZ, AzZeroPos); 
		} 
*/		 
 
 
		 
//		MainLoop(); 
		while(SyncFlag == 0) 
		{ 
			//NOP wait for Sync; 
		} 
		SyncFlag = 0;				 
	} 
//	StopCpuTimer0(); 
} 	 
 
 
//=========================================================================== 
// No more. 
//===========================================================================