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

📄 colorbar_subprogram.c

📁 彩条的产生
💻 C
字号:
//---------------- lecture03_subprogram.c  start---------------
#include "DMA_head.h"

unsigned short *DMA0_CONFIG = p_DMA0_CONFIG;
unsigned int *DMA0_START_ADDR = p_DMA0_START_ADDR;
unsigned short *DMA0_X_COUNT = p_DMA0_X_COUNT;
unsigned short *DMA0_Y_COUNT = p_DMA0_Y_COUNT;
unsigned short *DMA0_X_MODIFY = p_DMA0_X_MODIFY;
unsigned short *DMA0_Y_MODIFY = p_DMA0_Y_MODIFY;
unsigned short *PPI_CONTROL = 0xFFC01000;

void Fill_colorbar(unsigned char *buffer)
{
	int i,j;
	unsigned char *p;
	p=buffer;
	for(i=1;i<=3;i++)  //1~3行的偶场场消隐
	{
		*p = 0xFF;      //行消隐开始
		*(p+1) = 0x00;
		*(p+2) = 0x00;
		*(p+3) = 0xF1;
		p +=4;
		
		for(j=0;j<268/2;j++)
		{
			*p = 0x80;
			*(p+1) = 0x10;
			p +=2;
		}
		
		*p = 0xFF;     //行消隐结束
		*(p+1) = 0x00;
		*(p+2) = 0x00;
		*(p+3) = 0xEC;
		p +=4;		
	    
		for(j=0;j<1440;j++)
		{
			*p = 0;
			p++;
		}
	}
	
	for(i=4;i<=20;i++)   //4~20行奇场同步开始的场消隐
	{
		*p = 0xFF;       //行消隐开始
		*(p+1) = 0x00;
		*(p+2) = 0x00;
		*(p+3) = 0xB6;
		p +=4;
		
		for(j=0;j<268/2;j++)
		{
			*p = 0x80;
			*(p+1) = 0x10;
			p +=2;
		}
		
		*p = 0xFF;       //行消隐结束
		*(p+1) = 0x00;
		*(p+2) = 0x00;
		*(p+3) = 0xAB;
		p +=4;		
	    
		for(j=0;j<1440;j++)
		{
			*p = 0;
			p++;
		}
	}
	
	for(i=21;i<=263;i++) //21~263行奇场有效行开始
	{
		*p = 0xFF;       //行消隐开始
		*(p+1) = 0x00;
		*(p+2) = 0x00;
		*(p+3) = 0x9D;
		p +=4;

		for(j=0;j<268/2;j++)
		{
			*p = 0x80;
			*(p+1) = 0x10;
			p +=2;
		}
		
		*p = 0xFF;       //行消隐结束
		*(p+1) = 0x00;
		*(p+2) = 0x00;
		*(p+3) = 0x80;
		p +=4;
		
		for(j=0;j<45;j++) //white
		{
			*p = 0x80;
			*(p+1) = 0xFF;
			*(p+2) = 0x80;
			*(p+3) = 0xFF;
			p +=4;
		}
		
		for(j=0;j<45;j++)  //yellow
		{
			*p = 0x00;
			*(p+1) = 0xE1;
			*(p+2) = 0x94;
			*(p+3) = 0xE1;
			p +=4;
		}

		for(j=0;j<45;j++) //cyan
		{
			*p = 0xAA;
			*(p+1) = 0xB2;
			*(p+2) = 0x00;
			*(p+3) = 0xB2;
			p +=4;
		}
		
		for(j=0;j<45;j++)  //green
		{
			*p = 0x2B;
			*(p+1) = 0x95;
			*(p+2) = 0x15;
			*(p+3) = 0x95;
			p +=4;
		}
		
		for(j=0;j<45;j++) //magenta
		{
			*p = 0xDA;
			*(p+1) = 0x69;
			*(p+2) = 0xEA;
			*(p+3) = 0x69;
			p +=4;
		}
		
		for(j=0;j<45;j++)  //red
		{
			*p = 0x55;
			*(p+1) = 0x4C;
			*(p+2) = 0xFF;
			*(p+3) = 0x4C;
			p +=4;
		}

		for(j=0;j<45;j++) //blue
		{
			*p = 0xFF;
			*(p+1) = 0x1D;
			*(p+2) = 0x6B;
			*(p+3) = 0x1D;
			p +=4;
		}
		
		for(j=0;j<45;j++)  //black
		{
			*p = 0x80;
			*(p+1) = 0x00;
			*(p+2) = 0x80;
			*(p+3) = 0x00;
			p +=4;
		}
	}
	
	for(i=264;i<=265;i++)  //264~265行的奇场场消隐
	{
		*p = 0xFF;      //行消隐开始
		*(p+1) = 0x00;
		*(p+2) = 0x00;
		*(p+3) = 0xB6;
		p +=4;
		
		for(j=0;j<268/2;j++)
		{
			*p = 0x80;
			*(p+1) = 0x10;
			p +=2;
		}
		
		*p = 0xFF;     //行消隐结束
		*(p+1) = 0x00;
		*(p+2) = 0x00;
		*(p+3) = 0xAB;
		p +=4;		
	    
		for(j=0;j<1440;j++)
		{
			*p = 0;
			p++;
		}
	}
	
	for(i=266;i<=282;i++)   //266~282行偶场同步开始的场消隐
	{
		*p = 0xFF;       //行消隐开始
		*(p+1) = 0x00;
		*(p+2) = 0x00;
		*(p+3) = 0xF1;
		p +=4;
		
		for(j=0;j<268/2;j++)
		{
			*p = 0x80;
			*(p+1) = 0x10;
			p +=2;
		}
		
		*p = 0xFF;       //行消隐结束
		*(p+1) = 0x00;
		*(p+2) = 0x00;
		*(p+3) = 0xEC;
		p +=4;		
	    
		for(j=0;j<1440;j++)
		{
			*p = 0;
			p++;
		}
	}
	
	for(i=283;i<=525;i++) //283~525行奇场有效行开始
	{
		*p = 0xFF;       //行消隐开始
		*(p+1) = 0x00;
		*(p+2) = 0x00;
		*(p+3) = 0xDA;
		p +=4;

		for(j=0;j<268/2;j++)
		{
			*p = 0x80;
			*(p+1) = 0x10;
			p +=2;
		}
		
		*p = 0xFF;       //行消隐结束
		*(p+1) = 0x00;
		*(p+2) = 0x00;
		*(p+3) = 0xC7;
		p +=4;
		
		for(j=0;j<45;j++) //white
		{
			*p = 0x80;
			*(p+1) = 0xFF;
			*(p+2) = 0x80;
			*(p+3) = 0xFF;
			p +=4;
		}
		
		for(j=0;j<45;j++)  //yellow
		{
			*p = 0x00;
			*(p+1) = 0xE1;
			*(p+2) = 0x94;
			*(p+3) = 0xE1;
			p +=4;
		}

		for(j=0;j<45;j++) //cyan
		{
			*p = 0xAA;
			*(p+1) = 0xB2;
			*(p+2) = 0x00;
			*(p+3) = 0xB2;
			p +=4;
		}
		
		for(j=0;j<45;j++)  //green
		{
			*p = 0x2B;
			*(p+1) = 0x95;
			*(p+2) = 0x15;
			*(p+3) = 0x95;
			p +=4;
		}
		
		for(j=0;j<45;j++) //magenta
		{
			*p = 0xDA;
			*(p+1) = 0x69;
			*(p+2) = 0xEA;
			*(p+3) = 0x69;
			p +=4;
		}
		
		for(j=0;j<45;j++)  //red
		{
			*p = 0x55;
			*(p+1) = 0x4C;
			*(p+2) = 0xFF;
			*(p+3) = 0x4C;
			p +=4;
		}

		for(j=0;j<45;j++) //blue
		{
			*p = 0xFF;
			*(p+1) = 0x1D;
			*(p+2) = 0x6B;
			*(p+3) = 0x1D;
			p +=4;
		}
		
		for(j=0;j<45;j++)  //black
		{
			*p = 0x80;
			*(p+1) = 0x00;
			*(p+2) = 0x80;
			*(p+3) = 0x00;
			p +=4;
		}
	}	
}

DMA_init(Image_422_1716x525)
{
	*DMA0_CONFIG = 0x1010;
	*DMA0_START_ADDR = Image_422_1716x525;
	*DMA0_X_COUNT = 1716;
	*DMA0_Y_COUNT = 525;
	*DMA0_X_MODIFY = 1;
	*DMA0_Y_MODIFY = 1;
}

PPI_init()
{
	*PPI_CONTROL = 0x0002;
}

DMA_enable()
{
    *DMA0_CONFIG |= 0x0001;	
}

PPI_enable()
{
	*PPI_CONTROL = 0x0003;
}
//---------------- lecture03_subprogram.c  end---------------

⌨️ 快捷键说明

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