本帖最后由 往事啊 于 2018-6-5 20:09 编辑
OV7670头文件参数定义,7670初始化没问题,场中断和定时函数也没啥问题
#define OV7670_VSYNC HAL_GPIO_ReadPin(GPIOF,GPIO_PIN_8) //同步信号检测IO
#define OV7670_WRST(n) (n?HAL_GPIO_WritePin(GPIOF,GPIO_PIN_7,GPIO_PIN_SET):HAL_GPIO_WritePin(GPIOF,GPIO_PIN_7,GPIO_PIN_RESET)) //写指针复位
#define OV7670_WREN(n) (n?HAL_GPIO_WritePin(GPIOF,GPIO_PIN_6,GPIO_PIN_SET):HAL_GPIO_WritePin(GPIOF,GPIO_PIN_6,GPIO_PIN_RESET)) //写入FIFO使能
#define OV7670_RCK_H GPIOE->BSRR=1<<3 //设置读数据时钟高电平
#define OV7670_RCK_L GPIOE->BSRR=1<<19 //设置读数据时钟低电平
#define OV7670_RRST(n) (n?HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9,GPIO_PIN_SET):HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9,GPIO_PIN_RESET)) //读指针复位
#define OV7670_CS(n) (n?HAL_GPIO_WritePin(GPIOE,GPIO_PIN_4,GPIO_PIN_SET):HAL_GPIO_WritePin(GPIOE,GPIO_PIN_4,GPIO_PIN_RESET)) //片选信号(OE)
#define OV7670_DATA (u8)(GPIOC->IDR>>4&0x00ff);
都放在一起太长,2、3楼分别放上更新函数与主函数
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
int main(void)
{
u8 tm;
Cache_Enable();
Stm32_Clock_Init(432,25,2,9);
HAL_Init();
delay_init(216);
uart_init(115200);
LED_Init();
LCD_Init();
LCD_ShowString(30,30,200,16,16,"LCD Init OK!");
while(OV7670_Init())
{
LCD_ShowString(30,50,200,16,16,"OV7670 Error!");
delay_ms(200);
LCD_Fill(30,50,239,246,WHITE);
delay_ms(200);
}
LCD_ShowString(30,50,200,16,16,"OV7670 Init OK!");
delay_ms(1500);
TIM3_Init(9999,10800-1);
EXTI8_Init();
OV7670_Window_Set(12,176,240,320);
OV7670_CS(0);
LCD_Clear(BLACK);
while(1)
{
camera_refresh();
tm++;
if(tm==15)
{
tm=0;
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_1);
}
delay_ms(10);
}
}
如果有一定动作,说明驱动问题不大,再调调 就O了。
说明初始化可能成功了,问题在数据处理这里
一周热门 更多>