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

📄 hello.c

📁 DSP54X系列的FIR滤波器源程序
💻 C
字号:
/*
 *  Copyright 2003 by Texas Instruments Incorporated.
 *  All rights reserved. Property of Texas Instruments Incorporated.
 *  Restricted rights to use, duplicate or disclose this code are
 *  granted through contract.
 *  
 */
/* "@(#) DSP/BIOS 4.90.270 06-11-03 (barracuda-m10)" */
/***************************************************************************/
/*                                                                         */
/*     H E L L O . C                                                       */
/*                                                                         */
/*     Basic C standard I/O from main.                                     */
/*                                                                         */
/*                                                                         */
/***************************************************************************/

#include <stdio.h>
#define  uint unsigned int
#define  ushort unsigned short
#define  ulint unsigned long


uint *srampoint;

ushort  state=0;
ioport uint port2aaa;
ioport uint port5555;
 
/********************************************/
void CFIQueryExit(void)
{
	port5555 = 0xaaaa;
	port2aaa = 0x5555;
	port5555 = 0xf0f0;
	state &= 0xfc;	
}
void SWPIDExit(void)
{
	port5555 = 0xf0f0;
	state &= 0xfc;
}
void CFIQueryEntry(void)
{
	if(state&1)
	{
		if(state&2)
			SWPIDExit();
		else
			return;
	}
	
	port5555 = 0xaaaa;
	port2aaa = 0x5555;
	port5555 = 0x9898;
	state |= 1;	
}
void SWPIDEntry(void)
{
	if(state&1)
	{
		if(state&2)
			return;
		else
			CFIQueryExit();
	}

	port5555 = 0xaaaa;
	port2aaa = 0x5555;
	port5555 = 0x9090;
	state |= 3;
}
void ChipErase(void)
{
	if(state&1)
	{
		if(state&2)
			SWPIDExit();
		else
			CFIQueryExit();						
	}
	port5555 = 0xaaaa;
	port2aaa = 0x5555;
	port5555 = 0x8080;
	port5555 = 0xaaaa;
	port2aaa = 0x5555;
	port5555 = 0x1010;
	while(1)
	{
		uint i;
		i = *((volatile uint *)0x6666)&0x40;
		if(i!=*((volatile uint *)0x6666)&0x40)	//D6 == D6
			continue;
		if(*((volatile uint *)0x8888)&0x80)	
			break;						//D7 == 1
	}		
}
void FlashProg(uint ProgStart, uint InData)//uint *DataPtr, uint WordCnt)
{
	uint i, j;		
		j=InData;
		port5555 = 0xaaaa;
		port2aaa = 0x5555;
		port5555 = 0xa0a0;
		srampoint=(uint *)ProgStart;		
		*srampoint = j;		
		while(1)
		{
		    
			i = (*srampoint)&0x40;
			if(i!=(*srampoint&0x40))		//D6 == D6
				continue;
			if((*srampoint&0x80)==(j&0x80))	
				break;					//D7 == D7
		}
	
}

void FlashRead(uint ReadStart, uint *DataPtr, uint Size)
{
	int i;	
	for(i=0; i<Size; i++)
		*(DataPtr+i) = *((uint *)ReadStart+i);	
	
}
void main()
{
uint SramTemp=0;
uint ReadData=0;
uint ReadToFlash=0;
uint AccessPoint=0x8000;
FILE  *fptr;

    asm(" SSBX INTM");
    asm(" STM #7fffH,SWWSR");
    asm(" STM #0a0H,PMST");
    asm(" SSBX XF");
    ChipErase();  
    puts("Download Begin.........\n");
              
    fptr = fopen("bassfir.bin", "rb");
    while(!feof(fptr))
       {
        SramTemp=0;
        ReadData=fgetc(fptr);
        ReadToFlash=ReadData;
        ReadData=fgetc(fptr);
        ReadToFlash=(ReadToFlash<<8)+ReadData;
        FlashProg(AccessPoint,ReadToFlash);
        asm(" NOP");
        asm(" NOP");
        asm(" NOP");
        asm(" NOP"); 
        srampoint=(uint *)AccessPoint;
        SramTemp=*srampoint;
        asm(" NOP");
        asm(" NOP");
        asm(" NOP");
        asm(" NOP"); 
        AccessPoint++;        
        } 
        FlashProg(0xffff,0x8000); 
        asm(" NOP");
        asm(" NOP");          
        fclose(fptr);
        puts("Download Finish!\n");
        asm(" NOP");
        asm(" NOP");          
}

⌨️ 快捷键说明

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