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

📄 example_28xevpwm.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()      */



/* Declare and initialize an output channel called "ochan"          */

RTDX_CreateOutputChannel(ochan);



void main( void )

{

        unsigned int i;

 
        /* Target initialization for RTDX                           */

  EALLOW;

// On TMX samples, to get the best performance of on chip RAM blocks M0/M1/L0/L1/H0 internal
// control registers bit have to be enabled. The bits are in Device emulation registers.
   DevEmuRegs.M0RAMDFT = 0x0300;
   DevEmuRegs.M1RAMDFT = 0x0300;
   DevEmuRegs.L0RAMDFT = 0x0300;
   DevEmuRegs.L1RAMDFT = 0x0300;
   DevEmuRegs.H0RAMDFT = 0x0300;
   
           
// Disable watchdog module
   SysCtrlRegs.WDCR= 0x0068;

// Initalize PLL
   SysCtrlRegs.PLLCR = 0xA;
   // Wait for PLL to lock
   for(i= 0; i< 5000; i++){}
       
// HISPCP/LOSPCP prescale register settings, normally it will be set to default values
   SysCtrlRegs.HISPCP.all = 0x0001;
   SysCtrlRegs.LOSPCP.all = 0x0002;	
// Peripheral clock enables set for the selected peripherals.   
   SysCtrlRegs.PCLKCR.bit.EVAENCLK=1;
   SysCtrlRegs.PCLKCR.bit.EVBENCLK=1;
   SysCtrlRegs.PCLKCR.bit.SCIENCLKA=1;
   SysCtrlRegs.PCLKCR.bit.SCIENCLKB=1;
   SysCtrlRegs.PCLKCR.bit.MCBSPENCLK=1;
   SysCtrlRegs.PCLKCR.bit.SPIENCLK=1;
   SysCtrlRegs.PCLKCR.bit.ECANENCLK=1;
   SysCtrlRegs.PCLKCR.bit.ADCENCLK=1;				
   

// 初始化 GPIO
	GpioMuxRegs.GPAMUX.all=0xffff; // 配置端口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 CONFIGURE OK


//	GpioDataRegs.GPFCLEAR.all=0x0001;
//	asm("RPT #200||NOP");
//	GpioDataRegs.GPFSET.all=0x0001;

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

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

	EINT;

// GENERATE SQUARE SIGNAL
	//step1, 初始化定时器,初始化EVA Timer1
	EvaRegs.T1PR=0x000e;	 // Timer1 period
	EvaRegs.T1CMPR=0x0008;	 // Timer1 compare
	EvaRegs.T1CNT=0x0000;	//Timer1 counter
	EvaRegs.T1CON.all=0x9042; 

	//step2,建立T1PWM 和 T2PWM 有比较逻辑驱动T1/T2 PWM
	EvaRegs.GPTCONA.all=0x0042;
 
 
	//step3 使能PWM1-PWM6 的比较器
/*	EvaRegs.CMPR1=0x0008;
	EvaRegs.ACTR.all=0x000a;
	EvaRegs.DBTCONA.all=0x0000;  // 禁止死区设置

//	EvaRegs.COMCONA.bit.FCOMPOE=1;
//	EvaRegs.COMCONA.bit.CENABLE=1;
    EvaRegs.COMCONA.all=0x8200;
	EvbRegs.ACTRB.all=0x0006;
	EvbRegs.DBTCONB.all=0x0000;
	EvbRegs.COMCONB.all=0xA600;  */
 //         TARGET_INITIALIZE(); 
       // Enable the channels                                       
 //       RTDX_enableInput(&ichan); 
 //       RTDX_enableOutput(&ochan); 
    TARGET_INITIALIZE();
        RTDX_enableOutput(&ochan);
        for ( i = 0; i < 100; i++ ) {
                
                if ( !RTDX_write( &ochan, &i, sizeof(i) ) ) {
                        fprintf(stderr,

                                "\nError: RTDX_write() failed!\n");

                        abort();
                }

                                     
                while ( RTDX_writing != NULL ) {
                        #if RTDX_POLLING_IMPLEMENTATION
                               
                                RTDX_Poll();
                        #endif
                }
        }
        
        RTDX_disableOutput(&ochan);
}

 

⌨️ 快捷键说明

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