www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 芯聞號 > 充電吧
[導讀]這個比較簡單,一次成功,沒遇到任何問題.GraphRotation.c/****************************************************************

這個比較簡單,一次成功,沒遇到任何問題.


GraphRotation.c


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


//超時,單位US
#define?GR_TIMEOUT	1000000




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



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


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



/*************************************************************************************************************************
*函數????	:	void?Rotation_SetSourImageAddr(u32?RGB_Y_Addr,u32?CB_Addr,u32?CR_Addr)
*功能????	:	設置源圖像地址
*參數????	:	RGB_Y_Addr?:?RGB或者Y組成部分
*?			CB_Addr:CB組成部分
*?			CR_Addr:CR組成部分
*返回????	:	無
*依賴	:?	底層宏定義
*作者?????	:	cp1300@139.com
*時間????:	20121016
*最后修改時間:	20121016
*說明????:	無
*************************************************************************************************************************/
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;
}


/*************************************************************************************************************************
*函數????	:	void?Rotation_SetDesImageAddr(u32?RGB_Y_Addr,u32?CB_Addr,u32?CR_Addr)
*功能????	:	設置目標圖像地址
*參數????	:	RGB_Y_Addr?:?RGB或者Y組成部分
*?			CB_Addr:CB組成部分
*?			CR_Addr:CR組成部分
*返回????	:	無
*依賴	:?	底層宏定義
*作者?????	:	cp1300@139.com
*時間????:	20121016
*最后修改時間:	20121016
*說明????:	無
*************************************************************************************************************************/
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;
}


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


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


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


GraphRotation.h



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



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

//旋轉程度
#define?GR_0Deg		0		//0
#define?GR_90Deg	1		//90
#define?GR_180Deg	2		//180
#define?GR_270Deg	3		//270

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



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



#endif?/*GRAPHROTATION_H_*/




//相關寄存器定義


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



//測試


#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閃爍程序,在定時器0中斷服務程序中閃爍,周期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++;
		}
	}
}

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

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


//原圖片

//開發(fā)板上測試效果圖


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

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數據產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數據產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉