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

📄 rtdx.c

📁 利用ccs环境、MATLAB环境、DSP(TMS320F2812)、被测对象和Agilient网络分析仪E5071B
💻 C
字号:
 #include <stdio.h>         
#include "DSP28_Device.h"          /* fprintf(), puts()        */
 #include <stdlib.h>                     /* abort()                  */
 #include <rtdx.h>                       /* RTDX                     */
 #include "target.h"                     /* TARGET_INITIALIZE()      */
 #include "math.h"
                    /* TARGET_INITIALIZE()      */
//#include "math.h"
#define CHA1 0x0800fd
#define CHA2 0x0800fe
#define FIL_LEN 3
#pragma DATA_SECTION(DA_addrx,".da_addra");
#pragma DATA_SECTION(DA_addrxx,".da_addrb");
 int *p1,*p2,*ad1,*ad2;
 int DA_addrx;
 int DA_addrxx;
 RTDX_CreateOutputChannel(ochan);
RTDX_CreateInputChannel(ichan);
int filter_median(int *p)
{
/*	int x,i,j;
	for(i=0;i<FIL_LEN;i++)
	{
	x=p[i];
	for(j=i+1;j<FIL_LEN;j++)
	{
		if(p[j]<x)
		{
			x=p[j];
			p[j]=p[i];
			p[i]=x;
		}
	}
	}
 	return (p[FIL_LEN/2-1]+p[FIL_LEN/2]+p[FIL_LEN/2+1])/3;
//	return p[FIL_LEN/2];
*/

int x=0,i;
for(i=0;i<FIL_LEN;i++)
x+=p[i];

return x/FIL_LEN;
}
void main( void )
{
 unsigned int response,counter;
         int i,k,j;
 unsigned int IQ[2];
	unsigned int test[11]={0,409,819,1229,1638,2048,2457,2867,3277,3686,4095};
	response=555;
    p1=(int *)CHA1;
	p2=(int *)CHA2;
	ad1=(int *)0x0800fc;
	ad2=(int *)0x0800ff;
	InitSysCtrl();             //必要时,需要修改其中的相关寄存器配置,在使用时需查看;配置是否满足需求			
 
//////////////////////////////////////////////////////////////////
// Initializing GPIO
	EALLOW;
	GpioMuxRegs.GPAMUX.all=0xfff0; // 配置端口A,作为PWM clock和GPIO
	GpioMuxRegs.GPADIR.all=0xffff;
	GpioMuxRegs.GPAQUAL.all=0x0000;
	GpioMuxRegs.GPEMUX.all=0x0003; // 配置端口E为外部中断XINT1,XINT2
	GpioMuxRegs.GPEDIR.all=0x0003;
	GpioMuxRegs.GPEQUAL.all=0x0000;
	GpioMuxRegs.GPFMUX.all=0x0000; 
	GpioMuxRegs.GPFDIR.all=0x0005;
	EDIS;
// GPIO Initialized OK !!!
///////////////////////////////////////////////////////////////////

//// Interrupt Control and Initializing ///////////////////////////
	DINT;
	IER=0x0000;
	IFR=0x0000;
 
//	InitPieCtrl();
//	InitPieVectTable();
	InitXintf();
 	XIntruptRegs.XINT1CR.all=0x0003; // 允许外设中断,触发方式为负边沿
	XIntruptRegs.XINT2CR.all=0x0002;

	PieCtrl.PIEIER1.bit.INTx3=1;
	PieCtrl.PIEIER1.bit.INTx4=1;
	IER|=0x0001;

	EINT;
//// Interrupt configured OK !!!
////////////////////////////////////////////////////////////////////
 

// GENERATE SQUARE SIGNAL: configure the T1 PR

	EvaRegs.T1PR=0x0001;	 // Timer1 period
	EvaRegs.T1CMPR=0x0001;	 // Timer1 compare
	EvaRegs.T1CNT=0x0000;	//Timer1 counter
	EvaRegs.T1CON.all=0x9042; 

 	EvaRegs.GPTCONA.all=0x0042;
////////////////////////////////////////////////////////////////////

        TARGET_INITIALIZE();
	 	RTDX_Init();
        RTDX_enableOutput(&ochan);
		RTDX_enableInput(&ichan);

/////////////////////////////////////////////
	GpioDataRegs.GPADAT.bit.GPIOA0=1;
	for(i=0;i<100;i++) ;
	GpioDataRegs.GPADAT.bit.GPIOA0=0;
	for(i=0;i<100;i++) ;
	 i=4095;
/*	 while(1){
 for(i=0;i<4096;i++)
 {
  DA_addrx=i;
    DA_addrxx=i;
	}  
	}
 */
   DA_addrx=i;
    DA_addrxx=i;
counter=0;
   DA_addrx=i;
    DA_addrxx=i;
while(1)
{
/*  for(j=0;j<11;j++)
 {
 	for(i=0;i<11;i++)
 	{ 
  		DA_addrx=test[i];
 	   	DA_addrxx=test[j];
	}  
 }
 */ 
 	 if ( (RTDX_read( &ichan,IQ, sizeof(IQ) )) != sizeof(IQ))
       { 
		 counter++;
         fprintf(stderr,"\nError: RTDX_read() expired times:%d\n",counter);
         continue;
       }
 	    DA_addrx=IQ[0];
    	DA_addrxx=IQ[1];
	   if ( !RTDX_write( &ochan, &response, sizeof(response) ) ) 
	   {
          fprintf(stderr,"\nError:%d RTDX_write() failed!\n",i);

          abort();
       }
 
/*
 	switch(command)
	{
		case 125:
		 if ( (RTDX_read( &ichan,IQ, sizeof(IQ) )) != sizeof(IQ))
          { 
		 fprintf(stderr,"\nError: RTDX_read() from matlab error\n");
         abort();
          }
    	DA_addrx=IQ[0];
    	DA_addrxx=IQ[1];
		break;
		default:
		break;
	} 
	*/
 
 } // end while
 
}


⌨️ 快捷键说明

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