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

📄 dsp6711_edma.c

📁 该程序实现数据从OX200通过EDMA搬送到0X600的地方
💻 C
字号:
#include <c6x.h>
#include "c6211dsk.h"
#include "c6711interrupt.h"
#include "dsp6711_timer.h"
void EDMA_init(int size,int src,int smoshi,int dst,int dmoshi,int esize,int tcc);
//interrupt void time_isr();


void EDMA_init(int size,int src,int smoshi,int dst,int dmoshi,int esize,int tcc)
{

union
{
   struct
   { 
     unsigned int FS:1;
	 unsigned int LINK:1;
	 unsigned int PDTD2:1;
	 unsigned int PDTS3:1;
	 unsigned int rsv4:1;
	 unsigned int ATCC10:6;
	 unsigned int rsv11:1;
	 unsigned int ATCINT12:1;
	 unsigned int TCCM14:2;
	 unsigned int rsv15:1;
	 unsigned int TCC:4;//CHOOSE THE CHANNEL;TCC={0000b--1111b}
	 unsigned int TCINT:1;
	 unsigned int DUM:2;
	 unsigned int DD:1;
	 unsigned int SUM:2;
	 unsigned int DS:1;
	 unsigned int ESIZE:2;
	 unsigned int PRI:3;
   }evg;
 unsigned int reg;  

}EDMA_OPT;

union
{  
   struct
   {
       unsigned int EE0:1;
       unsigned int EE1:1;   
       unsigned int EE2:1;
       unsigned int EE3:1;
       unsigned int EE4:1;
	   unsigned int EE5:1;
	   unsigned int EE6:1;
	   unsigned int EE7:1;
	   unsigned int EE8:1;
	   unsigned int EE9:1;
	   unsigned int EE10:1;
	   unsigned int EE11:1;
	   unsigned int EE12:1;
	   unsigned int EE13:1;
	   unsigned int EE14:1;
	   unsigned int EE15:1;
	   unsigned int rsvbit31:16;
   }eg;
  unsigned int rg;
}EDMA_EER;
EDMA_EER.rg=*(volatile unsigned int *)EER;
//EDMA_CIER.reg=*(volatile unsigned int *)CIER;
switch(tcc)
{
         case 0:
	     EDMA_OPT.reg=*(volatile unsigned int *)(EVENT0_PARAMS+OPT);
         break;
           case 1:
	       EDMA_OPT.reg=*(volatile unsigned int *)(EVENT1_PARAMS+OPT);
		  break;
		   case 2:
	       EDMA_OPT.reg=*(volatile unsigned int *)(EVENT2_PARAMS+OPT);
		  break;
		   case 3:
	      EDMA_OPT.reg=*(volatile unsigned int *)(EVENT3_PARAMS+OPT);
		  break;
		   case 4:
	       EDMA_OPT.reg=*(volatile unsigned int *)(EVENT4_PARAMS+OPT);
		  break;
		   case 5:
	      EDMA_OPT.reg=*(volatile unsigned int *)(EVENT5_PARAMS+OPT);
		  break;
		   case 6:
	       EDMA_OPT.reg=*(volatile unsigned int *)(EVENT6_PARAMS+OPT);
		  break;
		   case 7:
	       EDMA_OPT.reg=*(volatile unsigned int *)(EVENT7_PARAMS+OPT);
	      break;
		   case 8:
	      EDMA_OPT.reg=*(volatile unsigned int *)(EVENT8_PARAMS+OPT);
		  break;
		   case 9:
	      EDMA_OPT.reg=*(volatile unsigned int *)(EVENT9_PARAMS+OPT);
		  break;
		   case 10:
	      EDMA_OPT.reg=*(volatile unsigned int *)(EVENTA_PARAMS+OPT);
		  break;
		   case 11:
	       EDMA_OPT.reg=*(volatile unsigned int *)(EVENTB_PARAMS+OPT);
		  break;
		   case 12:
	       EDMA_OPT.reg=*(volatile unsigned int *)(EVENTC_PARAMS+OPT);
		  break;
		   case 13:
	       EDMA_OPT.reg=*(volatile unsigned int *)(EVENTD_PARAMS+OPT);
		  break;
		   case 14:
	      EDMA_OPT.reg=*(volatile unsigned int *)(EVENTE_PARAMS+OPT);
		  break;
		   case 15:
	       EDMA_OPT.reg=*(volatile unsigned int *)(EVENTF_PARAMS+OPT);
		  break;
		  default:break;
}
//EDMA_OPT.reg=*(volatile unsigned int *)(EVENT1_PARAMS+OPT);
		
   *(volatile unsigned int *)EER=0x0000;//disable all interrupt
   *(volatile unsigned int *)ECR=0xffff;
   *(volatile unsigned int *)CIPR=0xffff;
   *(volatile unsigned int *)CIER=0x0000;
   EDMA_OPT.evg.PRI=1;
   EDMA_OPT.evg.ESIZE=size;
   EDMA_OPT.evg.DS=0;
   EDMA_OPT.evg.SUM=smoshi;
   EDMA_OPT.evg.DD=0;
   EDMA_OPT.evg.DUM=dmoshi;
   EDMA_OPT.evg.TCINT=0;
   EDMA_OPT.evg.TCC=tcc;
   EDMA_OPT.evg.FS=0;
  // *(volatile unsigned int *)(EVENT1_PARAMS+OPT)=EDMA_OPT.reg;
   switch(tcc)
   {
          case 0:
		  *(volatile unsigned int *)(EVENT0_PARAMS+SRC)=src;
          *(volatile unsigned int *)(EVENT0_PARAMS+DST)=dst;
          *(volatile unsigned int *)(EVENT0_PARAMS+CNT)=esize;
          *(volatile unsigned int *)(EVENT0_PARAMS+IDX)=0x0;
		   *(volatile unsigned int *)(EVENT0_PARAMS+OPT)=EDMA_OPT.reg;
	      EDMA_EER.eg.EE0=1;
		  break;
           case 1:
		   *(volatile unsigned int *)(EVENT1_PARAMS+SRC)=src;
           *(volatile unsigned int *)(EVENT1_PARAMS+DST)=dst;
           *(volatile unsigned int *)(EVENT1_PARAMS+CNT)=esize;
           *(volatile unsigned int *)(EVENT1_PARAMS+IDX)=0x0;
		    *(volatile unsigned int *)(EVENT1_PARAMS+OPT)=EDMA_OPT.reg;
	      EDMA_EER.eg.EE1=1;
		  break;
		   case 2:
		   *(volatile unsigned int *)(EVENT2_PARAMS+SRC)=src;
           *(volatile unsigned int *)(EVENT2_PARAMS+DST)=dst;
           *(volatile unsigned int *)(EVENT2_PARAMS+CNT)=esize;
           *(volatile unsigned int *)(EVENT2_PARAMS+IDX)=0x0;
		   *(volatile unsigned int *)(EVENT2_PARAMS+OPT)=EDMA_OPT.reg;
	      EDMA_EER.eg.EE2=1;
		  break;
		   case 3:
		    *(volatile unsigned int *)(EVENT3_PARAMS+SRC)=src;
            *(volatile unsigned int *)(EVENT3_PARAMS+DST)=dst;
            *(volatile unsigned int *)(EVENT3_PARAMS+CNT)=esize;
            *(volatile unsigned int *)(EVENT3_PARAMS+IDX)=0x0;
		    *(volatile unsigned int *)(EVENT3_PARAMS+OPT)=EDMA_OPT.reg;
	      EDMA_EER.eg.EE3=1;
		  break;
		   case 4:
		   *(volatile unsigned int *)(EVENT4_PARAMS+SRC)=src;
           *(volatile unsigned int *)(EVENT4_PARAMS+DST)=dst;
           *(volatile unsigned int *)(EVENT4_PARAMS+CNT)=esize;
           *(volatile unsigned int *)(EVENT4_PARAMS+IDX)=0x0;
		    *(volatile unsigned int *)(EVENT4_PARAMS+OPT)=EDMA_OPT.reg;
	      EDMA_EER.eg.EE4=1;
		  break;
		   case 5:
		   *(volatile unsigned int *)(EVENT5_PARAMS+SRC)=src;
           *(volatile unsigned int *)(EVENT5_PARAMS+DST)=dst;
           *(volatile unsigned int *)(EVENT5_PARAMS+CNT)=esize;
           *(volatile unsigned int *)(EVENT5_PARAMS+IDX)=0x0;
		    *(volatile unsigned int *)(EVENT5_PARAMS+OPT)=EDMA_OPT.reg;
	      EDMA_EER.eg.EE5=1;
		  break;
		   case 6:
		   *(volatile unsigned int *)(EVENT6_PARAMS+SRC)=src;
           *(volatile unsigned int *)(EVENT6_PARAMS+DST)=dst;
           *(volatile unsigned int *)(EVENT6_PARAMS+CNT)=esize;
           *(volatile unsigned int *)(EVENT6_PARAMS+IDX)=0x0;
		    *(volatile unsigned int *)(EVENT6_PARAMS+OPT)=EDMA_OPT.reg;
	      EDMA_EER.eg.EE6=1;
		  break;
		   case 7:
		   *(volatile unsigned int *)(EVENT7_PARAMS+SRC)=src;
           *(volatile unsigned int *)(EVENT7_PARAMS+DST)=dst;
           *(volatile unsigned int *)(EVENT7_PARAMS+CNT)=esize;
           *(volatile unsigned int *)(EVENT7_PARAMS+IDX)=0x0;
		    *(volatile unsigned int *)(EVENT7_PARAMS+OPT)=EDMA_OPT.reg;
	      EDMA_EER.eg.EE7=1;
	      break;
		   case 8:
		   *(volatile unsigned int *)(EVENT8_PARAMS+SRC)=src;
           *(volatile unsigned int *)(EVENT8_PARAMS+DST)=dst;
           *(volatile unsigned int *)(EVENT8_PARAMS+CNT)=esize;
           *(volatile unsigned int *)(EVENT8_PARAMS+IDX)=0x0;
		    *(volatile unsigned int *)(EVENT8_PARAMS+OPT)=EDMA_OPT.reg;
	      EDMA_EER.eg.EE8=1;
		  break;
		   case 9:
		   *(volatile unsigned int *)(EVENT9_PARAMS+SRC)=src;
           *(volatile unsigned int *)(EVENT9_PARAMS+DST)=dst;
           *(volatile unsigned int *)(EVENT9_PARAMS+CNT)=esize;
           *(volatile unsigned int *)(EVENT9_PARAMS+IDX)=0x0;
		   *(volatile unsigned int *)(EVENT9_PARAMS+OPT)=EDMA_OPT.reg;
	      EDMA_EER.eg.EE9=1;
		  break;
		   case 10:
		   *(volatile unsigned int *)(EVENTA_PARAMS+SRC)=src;
           *(volatile unsigned int *)(EVENTA_PARAMS+DST)=dst;
           *(volatile unsigned int *)(EVENTA_PARAMS+CNT)=esize;
           *(volatile unsigned int *)(EVENTA_PARAMS+IDX)=0x0;
		   *(volatile unsigned int *)(EVENTA_PARAMS+OPT)=EDMA_OPT.reg;
	      EDMA_EER.eg.EE10=1;
		  break;
		   case 11:
		   *(volatile unsigned int *)(EVENTB_PARAMS+SRC)=src;
           *(volatile unsigned int *)(EVENTB_PARAMS+DST)=dst;
           *(volatile unsigned int *)(EVENTB_PARAMS+CNT)=esize;
           *(volatile unsigned int *)(EVENTB_PARAMS+IDX)=0x0;
		    *(volatile unsigned int *)(EVENTB_PARAMS+OPT)=EDMA_OPT.reg;
	      EDMA_EER.eg.EE11=1;
		  break;
		   case 12:
		   *(volatile unsigned int *)(EVENTC_PARAMS+SRC)=src;
           *(volatile unsigned int *)(EVENTC_PARAMS+DST)=dst;
           *(volatile unsigned int *)(EVENTC_PARAMS+CNT)=esize;
           *(volatile unsigned int *)(EVENTC_PARAMS+IDX)=0x0;
		    *(volatile unsigned int *)(EVENTC_PARAMS+OPT)=EDMA_OPT.reg;
	      EDMA_EER.eg.EE12=1;
		  break;
		   case 13:
		   *(volatile unsigned int *)(EVENTD_PARAMS+SRC)=src;
          *(volatile unsigned int *)(EVENTD_PARAMS+DST)=dst;
          *(volatile unsigned int *)(EVENTD_PARAMS+CNT)=esize;
          *(volatile unsigned int *)(EVENTD_PARAMS+IDX)=0x0;
		   *(volatile unsigned int *)(EVENTD_PARAMS+OPT)=EDMA_OPT.reg;
	      EDMA_EER.eg.EE13=1;
		  break;
		   case 14:
		   *(volatile unsigned int *)(EVENTE_PARAMS+SRC)=src;
          *(volatile unsigned int *)(EVENTE_PARAMS+DST)=dst;
            *(volatile unsigned int *)(EVENTE_PARAMS+CNT)=esize;
           *(volatile unsigned int *)(EVENTE_PARAMS+IDX)=0x0;
		   *(volatile unsigned int *)(EVENTE_PARAMS+OPT)=EDMA_OPT.reg;
	      EDMA_EER.eg.EE14=1;
		  break;
		   case 15:
		   *(volatile unsigned int *)(EVENTF_PARAMS+SRC)=src;
           *(volatile unsigned int *)(EVENTF_PARAMS+DST)=dst;
          *(volatile unsigned int *)(EVENTF_PARAMS+CNT)=esize;
            *(volatile unsigned int *)(EVENTF_PARAMS+IDX)=0x0;
		    *(volatile unsigned int *)(EVENTF_PARAMS+OPT)=EDMA_OPT.reg;
	      EDMA_EER.eg.EE15=1;
		  break;
		  default:break;
   }
  *(volatile unsigned int *)EER=EDMA_EER.rg;
	 
  //*(volatile unsigned int *)CIER=EDMA_CIER.reg;
 
 }
 


  
void main()
{
  
  int src=0x200;
  int *p=(int *)src;
// enableSpecificINT(14,TINT0);
  EDMA_init(0,0x200,0,0x600,1,0x10,1);
  //timer_init(0,0x200);

 
  
     *p=0x60;
 
   //EDMA_start(0x200,0x600,0x10);


  while(1);
}


//interrupt void time_isr()
//{
 // *(volatile unsigned int *)ESR=0x2;
  
   //EDMA_start(0x200,0x520,100);
  // return;


//}

⌨️ 快捷键说明

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