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

📄 cfuncs.c

📁 基于TIc6205DSP上开发的MeanShift结合Kalman滤波的代码
💻 C
字号:

#include "6205.h"
#include "glbvar.h"
#include "stdio.h"



int	MemCopy(  int *DstImgAddr,  int *SrcImgAddr, int Len )
{
	int k;
	StartUserDMA( DstImgAddr, SrcImgAddr, Len/4 );
	for(;;)
	{
		k = GetUserDMAState();
	  	if( k == 0x00 )
	       break;
	}
	StopUserDMA();
	return 0;
}


//=================== Timer functions ======================
//记时有限制:记时时间不能超过40秒,记时单位:us
 void StartTimer( TIMER *timer )
{
	*timer = TMR0CNT;
}

 int ReadTimer( TIMER timer )
{
	register int Tmp = (int)(TMR0CNT) - timer;
	if( Tmp  < 0 )
		Tmp += 0x7FFFFFFF; 
	Tmp /= 50;
	return( Tmp );
}
//================== DMA transfer functions ==================
int	StartUserDMA( int *DestAddr, int *SourceAddr, int TransLen )
{
	if( (PRICTL1 & 0xC) != 0)
		return 0;
	PRICTL1 = 0x00002050;
	SECCTL1 = 0x0000A080;
	SRC1 = (unsigned int)SourceAddr;
	DST1 = (unsigned int)DestAddr;
    XFRCNT1 = TransLen;		
	PRICTL1 = PRICTL1 | 0x00000001;
	return 1;
}

int GetUserDMAState()
{
	return ( PRICTL1 & 0xC );
}

 void StopUserDMA()
{
	PRICTL1 = PRICTL1 & 0xFFFFFFFE;
}

//===================  Led lighten and darken  ========================
void LightenLed( unsigned char Flag )
{
	register unsigned int Data = 0xFFFFFFFF;
	if( Flag&0x01 )
		Data = Data & LED_GREEN_ON;
	if( Flag&0x02 )
		Data = Data & LED_RED_ON; 
	PCR1 = PCR1 & Data;
}
void DarkenLed( unsigned char Flag )
{
	register unsigned int Data = 0;
	if( Flag&0x01 )
		Data = Data | LED_GREEN_OFF;
	if( Flag&0x02 )
		Data = Data | LED_RED_OFF; 
	PCR1 = PCR1 | Data;
}

//================== delay with busy waiting, in 'ms' =================
//      NOTE: if system clock is other than 200MHz, the accuracy 
//            of the time delayed is not guaranteed!
void DelayMs(unsigned short int msTime)
{
	register int i,j;
	for(i=0; i<msTime; i++)
		for(j=0; j<11800; j++)asm(" nop  9");
}
//================== delay with busy waiting, in 'us' =================
//      NOTE: if system clock is other than 200MHz, the accuracy 
//            of the time delayed is not guaranteed!
void DelayUs(unsigned short int usTime)
{
	register int i,j;
	for(i=0; i<usTime; i++)
		for(j=0; j<12; j++)asm(" nop  9");
}


⌨️ 快捷键说明

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