新手上路
- 积分
- 32
- 金钱
- 32
- 注册时间
- 2014-5-17
- 在线时间
- 0 小时
|

楼主 |
发表于 2014-5-21 17:00:34
|
显示全部楼层
回复【7楼】正点原子:
---------------------------------
我想先把摄像头的数据利用DMA方式给LCD下边是相关的程序,可是液晶上不显示图像,麻烦你啦给我看一下吧
这样把数据放SRAM里行吗?
void camera_refresh1(void)
{
u8 *temp;
u32 j;
u8 color;
u16 color1;
if(ov_sta==2)
{
OV7670_RRST=0;
OV7670_RCK=0;
OV7670_RCK=1;
OV7670_RCK=0;
OV7670_RRST=1;
OV7670_RCK=1;
for(j=0;j<320*240*2;j++)
{
OV7670_RCK=0;
color1=GPIOC->IDR;
OV7670_RCK=1;
color=color1&0XFF;
temp=&color;
FSMC_SRAM_WriteBuffer(temp,j,1);
j++;
color1=color1>>8;
color=color1&0XFF;
temp=&color;
FSMC_SRAM_WriteBuffer(temp,j,1);
}
EXTI_ClearITPendingBit(EXTI_Line8);
ov_sta=0;
ov_frame++;
}
}
这是利用DMA方式把数据给LCD
void camera_refresh2()
{
LCD_Scan_Dir(U2D_L2R);
LCD_SetCursor(0x00,0x0000);
LCD_WriteRAM_Prepare();
MYDMA_Enable(DMA1_Channel4);
}
这是主函数
int main(void)
{
u8 lightmode=0,saturation=2,brightness=2,contrast=2;
u8 effect=0;
delay_init();
NVIC_Configuration();
uart_init(9600);
LED_Init();
LCD_Init();
FSMC_SRAM_Init();
MYDMA_Config(DMA1_Channel4,(u32)LCD_BASE,(u32)Bank1_SRAM3_ADDR ,76800);
RTC_Init();
if(lcddev.id==0X6804)
{
lcddev.width=240;
lcddev.height=320;
}
usmart_dev.init(72);
while(OV7670_Init())
{
LCD_ShowString(60,230,200,16,16,"OV7670 Error!!");
delay_ms(200);
LCD_Fill(60,230,239,246,WHITE);
delay_ms(200);
}
delay_ms(1500);
OV7670_Light_Mode(lightmode);
OV7670_Color_Saturation(saturation);
OV7670_Brightness(brightness);
OV7670_Contrast(contrast);
OV7670_Special_Effects(effect);
TIM6_Int_Init(10000,7199);
EXTI8_Init();
OV7670_Window_Set(10,174,240,320);
OV7670_CS=0;
while(1)
{
camera_refresh1();
camera_refresh2();
};
} |
|