S3C6410图形旋转裸机驱动(2)

//图形旋转 内存映射
//寄存器 地址 读/写 描述 复位值
#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)   //读  旋转器状态寄存器       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]; //目标图像缓冲区,图像分辨率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 Hz\n",Get_FCLK()); 
 lcd_printf("Get_PCLK : %d Hz\n",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);
 }
}

//原图片

S3C6410图形旋转裸机驱动



//开发板上测试效果图

S3C6410图形旋转裸机驱动

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/e379261851cc201136be395dc392fa59.html