日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > > 充電吧
[導(dǎo)讀]這個(gè)比較簡(jiǎn)單,一次成功,沒(méi)遇到任何問(wèn)題.GraphRotation.c/****************************************************************

這個(gè)比較簡(jiǎn)單,一次成功,沒(méi)遇到任何問(wèn)題.


GraphRotation.c


/*************************************************************************************************************
?*?文件名:	GraphRotation.c
?*?功能:		S3C6410?圖形旋轉(zhuǎn)底層驅(qū)動(dòng)函數(shù)
?*?作者:		cp1300@139.com
?*?創(chuàng)建時(shí)間:	2012年10月15日21:12
?*?最后修改時(shí)間:2012年10月15日
?*?詳細(xì):		圖形旋轉(zhuǎn)控制器底層驅(qū)動(dòng)
*************************************************************************************************************/
#include?"system.h"
#include?"GraphRotation.h"
#include?"delay.h"


//超時(shí),單位US
#define?GR_TIMEOUT	1000000




/*************************************************************************************************************************
*函數(shù)????	:	void?Rotation_SetInputImage(u8?TypeImage)
*功能????	:	設(shè)置輸入旋轉(zhuǎn)圖像格式
*參數(shù)????	:	TypeImage:圖像格式,見(jiàn)宏定義
				#define?GR_YUV420	0
				#define?GR_YUV422	3
				#define?GR_RGB565	4
				#define?GR_RGB888	5
*返回????	:	無(wú)
*依賴	:?	底層宏定義
*作者?????	:	cp1300@139.com
*時(shí)間????:	20121016
*最后修改時(shí)間:	20121016
*說(shuō)明????:	無(wú)
*************************************************************************************************************************/
void?Rotation_SetInputImage(u8?TypeImage)
{
	rGR_CTRLCFG?&=??~(0x7?<<?13);	//清除設(shè)置
	rGR_CTRLCFG?|=?(0x7?&?TypeImage)?<<?13;
}



/*************************************************************************************************************************
*函數(shù)????	:	void?Rotation_SetRotationDeg(u8?Degree)
*功能????	:	設(shè)置圖像旋轉(zhuǎn)角度
*參數(shù)????	:	Degree:旋轉(zhuǎn)角度,見(jiàn)宏定義
				#define?GR_0Deg		0		//0
				#define?GR_90Deg	1		//90
				#define?GR_180Deg	2		//180
				#define?GR_270Deg	3		//270
*返回????	:	無(wú)
*依賴	:?	底層宏定義
*作者?????	:	cp1300@139.com
*時(shí)間????:	20121016
*最后修改時(shí)間:	20121016
*說(shuō)明????:	翻轉(zhuǎn)和旋轉(zhuǎn)不能同時(shí)生效
*************************************************************************************************************************/
void?Rotation_SetRotationDeg(u8?Degree)
{
	rGR_CTRLCFG?&=??~(0x3?<<?6);	//清除設(shè)置
	rGR_CTRLCFG?|=?(0x3?&?Degree)?<<?6;
}


/*************************************************************************************************************************
*函數(shù)????	:	void?Rotation_SetFlipDir(u8?Direction)
*功能????	:	設(shè)置圖像翻轉(zhuǎn)方向
*參數(shù)????	:	Direction:翻轉(zhuǎn)方向,見(jiàn)宏定義
				#define?GR_NotFlip	0		//不翻轉(zhuǎn)
				#define?GR_VerFlip	2		//垂直翻轉(zhuǎn)
				#define?GR_HorFlip	3		//水平翻轉(zhuǎn)
*返回????	:	無(wú)
*依賴	:?	底層宏定義
*作者?????	:	cp1300@139.com
*時(shí)間????:	20121016
*最后修改時(shí)間:	20121016
*說(shuō)明????:	翻轉(zhuǎn)和旋轉(zhuǎn)不能同時(shí)生效
*************************************************************************************************************************/
void?Rotation_SetFlipDir(u8?Direction)
{
	rGR_CTRLCFG?&=??~(0x3?<<?4);	//清除設(shè)置
	rGR_CTRLCFG?|=?(0x3?&?Direction)?<<?4;
}



/*************************************************************************************************************************
*函數(shù)????	:	void?Rotation_SetSourImageAddr(u32?RGB_Y_Addr,u32?CB_Addr,u32?CR_Addr)
*功能????	:	設(shè)置源圖像地址
*參數(shù)????	:	RGB_Y_Addr?:?RGB或者Y組成部分
*?			CB_Addr:CB組成部分
*?			CR_Addr:CR組成部分
*返回????	:	無(wú)
*依賴	:?	底層宏定義
*作者?????	:	cp1300@139.com
*時(shí)間????:	20121016
*最后修改時(shí)間:	20121016
*說(shuō)明????:	無(wú)
*************************************************************************************************************************/
void?Rotation_SetSourImageAddr(u32?RGB_Y_Addr,u32?CB_Addr,u32?CR_Addr)
{
	rGR_SRCADDRREG0?=?RGB_Y_Addr;
	rGR_SRCADDRREG1?=?CB_Addr;
	rGR_SRCADDRREG2?=?CR_Addr;
}


/*************************************************************************************************************************
*函數(shù)????	:	void?Rotation_SetDesImageAddr(u32?RGB_Y_Addr,u32?CB_Addr,u32?CR_Addr)
*功能????	:	設(shè)置目標(biāo)圖像地址
*參數(shù)????	:	RGB_Y_Addr?:?RGB或者Y組成部分
*?			CB_Addr:CB組成部分
*?			CR_Addr:CR組成部分
*返回????	:	無(wú)
*依賴	:?	底層宏定義
*作者?????	:	cp1300@139.com
*時(shí)間????:	20121016
*最后修改時(shí)間:	20121016
*說(shuō)明????:	無(wú)
*************************************************************************************************************************/
void?Rotation_SetDesImageAddr(u32?RGB_Y_Addr,u32?CB_Addr,u32?CR_Addr)
{
	rGR_DESTADDRREG0?=?RGB_Y_Addr;
	rGR_DESTADDRREG1?=?CB_Addr;
	rGR_DESTADDRREG2?=?CR_Addr;
}


/*************************************************************************************************************************
*函數(shù)????	:	void?Rotation_SetImageSize(u16?VerSize,u16?HorSize)
*功能????	:	設(shè)置源圖像尺寸
*參數(shù)????	:	VerSize:源圖像垂直尺寸
*?			HorSize:源圖像水平尺寸
*返回????	:	無(wú)
*依賴	:?	底層宏定義
*作者?????	:	cp1300@139.com
*時(shí)間????:	20121016
*最后修改時(shí)間:	20121016
*說(shuō)明????:	無(wú)
*************************************************************************************************************************/
void?Rotation_SetImageSize(u16?VerSize,u16?HorSize)
{
	rGR_SRCSIZEREG?=?((u32)VerSize?<<?16)?+?HorSize;
}


/*************************************************************************************************************************
*函數(shù)????	:	void?GraphRotation_Init(void)
*功能????	:	初始化圖形旋轉(zhuǎn)模塊
*參數(shù)????	:	無(wú)
*返回????	:	無(wú)
*依賴	:?	底層宏定義
*作者?????	:	cp1300@139.com
*時(shí)間????:	20121015
*最后修改時(shí)間:	20121015
*說(shuō)明????:	無(wú)
*************************************************************************************************************************/
void?GraphRotation_Init(void)
{
	Set_GateClk(HCLK_ROT,ENABLE);	//使能圖形旋轉(zhuǎn)寄存器時(shí)鐘
}


/*************************************************************************************************************************
*函數(shù)????	:	u8?Rotation_RGB565Image(u32?SourImageAddr,u32?DesImageAddr,u16?VerSize,u16?HorSize,u8?GR_Mode)?
*功能????	:	旋轉(zhuǎn)一張RGB565圖像
*參數(shù)????	:	SourImageAddr:源圖像地址;DesImageAddr:目標(biāo)地址;VerSize:垂直分辨率;HorSize:水平分辨率;GR_Mode:旋轉(zhuǎn)或者翻轉(zhuǎn)模式
*返回????	:	0:成功;1:失敗
*依賴	:?	底層宏定義
*作者?????	:	cp1300@139.com
*時(shí)間????:	20121016
*最后修改時(shí)間:	20121016
*說(shuō)明????:	旋轉(zhuǎn)和翻轉(zhuǎn)無(wú)法同時(shí)使用
*************************************************************************************************************************/
u8?Rotation_RGB565Image(u32?SourImageAddr,u32?DesImageAddr,u16?VerSize,u16?HorSize,u8?GR_Mode)?
{
	u32?cnt;
	
	cnt?=?rGR_STATCFG;								//讀取,消除狀態(tài)標(biāo)志
	Rotation_SetInputImage(GR_RGB565);				//設(shè)置源圖像為RGB565格式
	Rotation_SetSourImageAddr(SourImageAddr,0,0);	//設(shè)置源圖像地址
	Rotation_SetDesImageAddr(DesImageAddr,0,0);		//設(shè)置目標(biāo)圖像地址
	Rotation_SetImageSize(VerSize,HorSize);			//設(shè)置源圖像尺寸
	if(GR_Mode?&?0x80)								//翻轉(zhuǎn)
	{
		Rotation_SetRotationDeg(GR_0Deg);			//不旋轉(zhuǎn)
		Rotation_SetFlipDir(GR_Mode?-?0x80);		//設(shè)置翻轉(zhuǎn)
	}
	else											//旋轉(zhuǎn)
	{
		Rotation_SetFlipDir(0);						//不翻轉(zhuǎn)
		Rotation_SetRotationDeg(GR_Mode);			//設(shè)置旋轉(zhuǎn)
	}
	rGR_CTRLCFG?|=?BIT0;							//開(kāi)始旋轉(zhuǎn)
	//用于等待旋轉(zhuǎn)成功
	cnt?=?0;
	while(!(rGR_STATCFG?&?BIT8))
	{
		cnt?++;
		Delay_US(1);
		if(cnt?>?GR_TIMEOUT)						//等待超時(shí)
			return?1;
	}
	return?0;
}


GraphRotation.h



/*************************************************************************************************************
?*?文件名:	GraphRotation.h
?*?功能:		S3C6410?圖形旋轉(zhuǎn)底層驅(qū)動(dòng)函數(shù)
?*?作者:		cp1300@139.com
?*?創(chuàng)建時(shí)間:	2012年10月15日21:12
?*?最后修改時(shí)間:2012年10月17日
?*?詳細(xì):		圖形旋轉(zhuǎn)控制器底層驅(qū)動(dòng)
*************************************************************************************************************/
#ifndef?GRAPHROTATION_H_
#define?GRAPHROTATION_H_



//旋轉(zhuǎn)圖像輸入格式
#define?GR_YUV420	0
#define?GR_YUV422	3
#define?GR_RGB565	4
#define?GR_RGB888	5

//旋轉(zhuǎn)程度
#define?GR_0Deg		0		//0
#define?GR_90Deg	1		//90
#define?GR_180Deg	2		//180
#define?GR_270Deg	3		//270

//翻轉(zhuǎn)定義
//0x80用于區(qū)分翻轉(zhuǎn)和旋轉(zhuǎn)
#define?GR_NotFlip	0x80		//不翻轉(zhuǎn)
#define?GR_VerFlip	0x82		//垂直翻轉(zhuǎn)
#define?GR_HorFlip	0x83		//水平翻轉(zhuǎn)



//相關(guān)函數(shù)
void?GraphRotation_Init(void);	//初始化
u8?Rotation_RGB565Image(u32?SourImageAddr,u32?DesImageAddr,u16?VerSize,u16?HorSize,u8?GR_Mode);	//旋轉(zhuǎn)一張RGB565圖像



#endif?/*GRAPHROTATION_H_*/




//相關(guān)寄存器定義


//圖形旋轉(zhuǎn)?內(nèi)存映射
//寄存器?地址?讀/寫?描述?復(fù)位值
#define	rGR_CTRLCFG?		S3C6410_SFR32(0x77200000)?		//讀/寫?	旋轉(zhuǎn)器控制寄存器?						0x0000_0000
#define	rGR_SRCADDRREG0?	S3C6410_SFR32(0x77200004)?		//讀/寫?	旋轉(zhuǎn)器源圖像(RGB?或Y?組成部分)地址寄存器?	0x0000_0000
#define	rGR_SRCADDRREG1?	S3C6410_SFR32(0x77200008)?		//讀/寫?	旋轉(zhuǎn)器源圖像(CB?組成部分)地址寄存器		0x0000_0000
#define	rGR_SRCADDRREG2?	S3C6410_SFR32(0x7720000C)?		//讀/寫?	旋轉(zhuǎn)器源圖像(CR?組成部分)地址寄存器		0x0000_0000
#define	rGR_SRCSIZEREG?		S3C6410_SFR32(0x77200010)?		//讀/寫?	旋轉(zhuǎn)器源圖像尺寸寄存器?					0x0000_0000
#define	rGR_DESTADDRREG0?	S3C6410_SFR32(0x77200018)?		//讀/寫?	旋轉(zhuǎn)器目標(biāo)圖像(RGB?或Y?成分)地址寄存器	0x0000_0000
#define	rGR_DESTADDRREG1?	S3C6410_SFR32(0x7720001C)?		//讀/寫?	旋轉(zhuǎn)器目標(biāo)圖像(CB?組成部分)地址寄存器		0x0000_0000
#define	rGR_DESTADDRREG2?	S3C6410_SFR32(0x77200020)?		//讀/寫?	旋轉(zhuǎn)器目標(biāo)圖像(CR?組成部分)地址寄存器		0x0000_0000
#define	rGR_STATCFG?		S3C6410_SFR32(0x7720002C)?		//讀?	旋轉(zhuǎn)器狀態(tài)寄存器?						0x0000_0000



//測(cè)試


#include?"system.h"
#include?"uart.h"
#include?"tft_lcd.h"
#include?"other.h"
#include?"delay.h"
#include?"timer.h"
#include?"ac97.h"
#include?"GraphRotation.h"
#include?"bmp.h"


//LED1閃爍程序,在定時(shí)器0中斷服務(wù)程序中閃爍,周期400MS
void?LED1_flash(void)
{
	LED1_FLASH();
}


//將緩存圖像送到顯存
void?RAMBuff_To_GBuff(const?u16?*RAMAddr,vu16?(*GBuff)[LCD_XSIZE],u16?x0,u16?y0,u16?Hsize,u16?Vsize)
{
	u16?x,y;
	
	for(y?=?y0;y?<?y0?+?Vsize;y?++)
	{
		for(x?=?x0;x?<?x0?+?Hsize;x?++)
		{
			GBuff[y][x]?=?*RAMAddr++;
		}
	}
}

//主函數(shù)
int?main(void)
{	
	u16?ImgeBuff[240?*?320];	//目標(biāo)圖像緩沖區(qū),圖像分辨率240*320
	
	LCD_Init();					//初始化LCD
	UART0_Init(DISABLE,115200);	//初始化串口,失能中斷接收,波特率115200
	LED_Init();					//初始化LED

	Timer1_Init(400000-1,ENABLE,LED1_flash);	//初始化定時(shí)器0,周期400ms
	
	lcd_printf("Get_FCLK?:?%d?Hzn",Get_FCLK());	
	lcd_printf("Get_PCLK?:?%d?Hzn",Get_PCLK());
	
	//圖像旋轉(zhuǎn)測(cè)試
	RAMBuff_To_GBuff((const?u16?*)gImage_bmp,LCD_BUFFER0,0,0,240,320);		//顯示原圖形
	GraphRotation_Init();		//初始化圖形旋轉(zhuǎn)模塊
	Rotation_RGB565Image((u32)gImage_bmp,(u32)ImgeBuff,320,240,GR_90Deg);	//圖像旋轉(zhuǎn)90°
	RAMBuff_To_GBuff((const?u16?*)ImgeBuff,LCD_BUFFER0,240,0,320,240);		//顯示旋轉(zhuǎn)90°圖形,長(zhǎng)寬對(duì)調(diào)
	Rotation_RGB565Image((u32)gImage_bmp,(u32)ImgeBuff,320,240,GR_HorFlip);	//圖像水平翻轉(zhuǎn)
	RAMBuff_To_GBuff((const?u16?*)ImgeBuff,LCD_BUFFER0,240+320,0,240,320);		//顯示水平翻轉(zhuǎn)的圖像,長(zhǎng)寬保持不變
	while(1)
	{
		LED2_FLASH();		//LED2閃爍
		Delay_US(600000);
	}
}


//原圖片

//開(kāi)發(fā)板上測(cè)試效果圖


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

針對(duì)傳統(tǒng)類人機(jī)器人在控制系統(tǒng)實(shí)時(shí)性和視覺(jué)識(shí)別方面的不足,以S3C6410作為主控芯片,設(shè)計(jì)了具有視覺(jué)識(shí)別功能的類人機(jī)器人控制系統(tǒng),通過(guò)改進(jìn)和簡(jiǎn)化視頻識(shí)別算法取得了良好的目標(biāo)識(shí)別效果。實(shí)驗(yàn)表明,基

關(guān)鍵字: s3c6410 機(jī)器人 機(jī)器視覺(jué)

早在今年8月份的時(shí)候就將jpeg解碼弄好了,但是一直以來(lái)非常的不穩(wěn)定,如果修改了任意地方的代碼都會(huì)造成解碼可能失敗,起初我以為是堆棧問(wèn)題,或者后面有非法指針,但是都沒(méi)得到結(jié)果,最后讓我只能懷疑編譯器了,而且

關(guān)鍵字: jpeg解碼 s3c6410

這幾天晚上一直折騰S3C6410的裸機(jī)SD卡啟動(dòng),不大想使用UBOOT,我是搞硬件的,對(duì)底層非常感興趣,不喜歡已經(jīng)寫好的,因此自己一直在嘗試,其實(shí)很早之前就試過(guò)SD卡啟動(dòng),也就是ARM11上電后會(huì)把SD卡倒數(shù)第9KB開(kāi)始...

關(guān)鍵字: s3c6410 sd 裸機(jī)啟動(dòng) boot啟動(dòng)

簡(jiǎn)單地說(shuō),IAR調(diào)試S3C6410可以分成以下3個(gè)步驟:1)編寫mac文件,初始化S3C6410的看門狗、時(shí)鐘、DDRAM控制器等,為下載代碼做準(zhǔn)備。2)編寫icf文件對(duì)S3C6410的內(nèi)存空間進(jìn)行分配,配置堆棧段、...

關(guān)鍵字: iar調(diào)試 s3c6410

主要過(guò)程:. 安裝lunux 環(huán)境. 安裝編譯工具. 下載Linux kernel. 安裝AndroidSDK. 獲得root file system. 修改Linux kernel 源碼. 配置Linux kernel...

關(guān)鍵字: Android s3c6410 內(nèi)核 移植

之前一直不知道如何使能硬件協(xié)處理器,剛剛在網(wǎng)上找到了方法,配置好RVDS,選擇相應(yīng)的內(nèi)核,選擇硬件VFP在初始化代碼中加入VFPEnable EQU (0x40000000) ;VFP使能...

關(guān)鍵字: s3c6410 vfp 浮點(diǎn)協(xié)處理器

???????? 雖然S3C6410出來(lái)很多年了,甚至于已經(jīng)停產(chǎn)了,出貨的幾乎都有依賴于庫(kù)存,SE4500也出來(lái)很多年了,但是網(wǎng)上依舊不會(huì)有調(diào)試資料幫助你,一切源于自私。希望本文能幫到你,不必感謝。本

關(guān)鍵字: s3c6410 se4500

/*************************************************************************************************************...

關(guān)鍵字: s3c6410 裸機(jī)dma

要確保S3C6410已經(jīng)初始化,一般是使用UBOOT初始化?//串口寄存器//UART0#defineULCON0????????????????*((vu32*)0x7F005000)???????

關(guān)鍵字: s3c6410 uart驅(qū)動(dòng)

裸機(jī)程序中可能用到的文件以及函數(shù)//system.c/*************************************************************************

關(guān)鍵字: s3c6410 裸機(jī)程序
關(guān)閉