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

📄 mainproc.c

📁 TMS320C6416的BOOTLOADER程序代码
💻 C
字号:
#include "c6x.h"			//project不必有,系统的,要包含c include 有顺序
#include "c6xdsp.h"
#include "variable.h"
#include "c6xdspinit.c"
#include "c6xinterrupts.h"
#include "intsubprog.c"
#include "sine_init.c"		//SINE表
#include "init_subfun.c"
void main()
{  	int qq=0;
	int ww=0;
	tim1=0;
   comm_intr();//initial EMIFB/EVENT
   McBSP_initial();//initial McBSP
   erase_flash();//initial flash
/**************initial program******************/
  CSR=0x100;    	       				     //disable all interrupts             
  IER=0x01;                   			     //disable interrupts beside NMI  
  ICR=0xffff; 								 //clear maskable interrupts manually 
  enableGlobalINT(); //important
  enableNMI();  //important
  config_Interrupt_Selector(5, EXT_INT5); //using external interrupt INT5 //我认为没有用
  enableSpecificINT(5);  //this sentence is important , as its name
  //enableSpecificINT(3);    
//  config_Interrupt_Selector(14,TINT0);
//  enableSpecificINT(14); //open tint0 interrupt;
  //open interrupt xint1;
  config_Interrupt_Selector(12,XINT1);
  enableSpecificINT(12); //open tint0 interrupt;
   *(unsigned volatile int *)TIMER0_CTRL=0x000002d5;
    channel9=(unsigned volatile int *)0x60000020;
    channel1=(unsigned short *)0x60000000;
	channel2=(unsigned short *)0x60000004;
	channel3=(unsigned short *)0x60000008;
	channel4=channel3+1;
	channel5=channel4+1;
	channel6=channel5+1;
	channel7=channel6+1;
	channel8=channel7+1;
//测试SDRAM,指针指向EMIFA空间
	sdaddr1=(volatile int *)0x80000004;
	sdaddr2=sdaddr1+1;
	sdaddr3=sdaddr2+1;
	sdaddr4=sdaddr3+1;
	sdaddr5=sdaddr4+1;
	sddat1=0x5555;
	sddat2=0x22;
	sddat3=0x33;
	sddat4=0x44;
	sddat5=0x55;
	tim1=0;
	flag_sine=1;
	sine_addr=SINE;
    dat1=0;
  while(1)
   { //position=0;
//     *channel3=0x5555;
//     position1=*channel1;
//     for(qq=0;qq<10;qq++)		
//     	asm(" nop ");
//     *channel9=position2;
//       position2=*channel9;
//测试SDRAM,向SDRAM空间写一个数
//	 *sdaddr1=sddat1;
//     for(ww=0;ww<100;ww++)
//    	{asm(" nop ");}
//	 *sdaddr2=sddat2;
//     for(ww=0;ww<100;ww++)
//    	{asm(" nop ");}
//	 *sdaddr3=sddat3;
//     for(ww=0;ww<100;ww++)
//    	{asm(" nop ");}
//	 *sdaddr4=sddat4;
//     for(ww=0;ww<100;ww++)
//    	{asm(" nop ");}
//	 *sdaddr5=sddat5;
//     for(ww=0;ww<50;ww++)
//    	{asm(" nop ");}
//    if (tim1==10000)
//       {tim1=0;
//       *(unsigned volatile short *)McBSP1_DXR=0x5555;
//       }
//测试SDRAM,从SDRAM空间读出一个数
//     sddat1w=*sdaddr1;
//     sddat2w=*sdaddr2;
//     sddat3w=*sdaddr3;
//     sddat4w=*sdaddr4;
//     sddat5w=*sdaddr5;
     for(ww=0;ww<100;ww++)
	    	{asm(" nop ");}
    flash_dat=(unsigned volatile char *)0x64000000;   
	 for(qq=0;qq<100;qq++)
     {*(unsigned volatile char *)flash_adr1=0x00aa;
     *(unsigned volatile char *)flash_adr2=0x0055;
     *(unsigned volatile char *)flash_adr1=0x00a0;
     *(unsigned volatile char *)flash_dat=0x11;
     flash_dat++;
     for(ww=0;ww<1100;ww++)
	    	{asm(" nop ");}
     }
//     *(unsigned volatile char *)flash_adr1=0x00aa;
//     *(unsigned volatile char *)flash_adr2=0x0055;
//     *(unsigned volatile char *)flash_adr1=0x00a0;
     dat1=*(unsigned volatile char *)0x64000000;
//     for(ww=0;ww<1100;ww++)
//	 {asm(" nop ");}
//发送sine表
/*	if(flag_sine==1)
	{ flag_sine=0;
	   *(unsigned volatile short *)McBSP1_DXR=*sine_addr;
	   if(sine_addr==SINE+8191)
	     sine_addr=SINE;
	    else
	    { sine_addr=sine_addr+1;
	     }
	}*/
//测试flash,对flash擦写

   }
}
 

⌨️ 快捷键说明

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