本帖最后由 疯子本人 于 2019-10-3 16:47 编辑
想用mini板实现照相机功能,将一些文件添加好了之后,发现出现了问题,报错是出现在写入文件错误这里,跟进去之后发现这个if(res==FR_OK)没进去,对此有点疑惑,搞不清是哪里出问题了,特此来寻求各位的帮助。以下是程序
整个文件没报错,初始化也成功了,ov7670摄像头也可以拍照,但是就是用bmp截屏的时候会出现错误,有大佬帮忙解答一下吗(用的是ov7670摄像头与stm32mini板),是bmp函数出现问题了吗,可是是从其他例程直接移植过来的呀,求救求救
单片机源程序如下:
- #include "sys.h"
- #include "usart.h"
- #include "delay.h"
- #include "led.h"
- #include "lcd.h"
- #include "usmart.h"
- #include "ff.h"
- #include "flash.h"
- #include "exfuns.h"
- #include "text.h"
- #include "piclib.h"
- #include "string.h"
- #include "math.h"
- #include "ov7670.h"
- #include "exti.h"
- #include "timer.h"
- #include "stm32f10x.h"
- #include "key.h"
- #include "malloc.h"
- //ALIENTEK Mini STM32开发板扩展实验9
- extern u8 ov_sta; //在exit.c里面定义
- extern u8 ov_frame; //在timer.c里面定义
- FRESULT res_sd;//文件操作结果
- FIL fnew; //文件对
- UINT fnum; //文件成功读写数量
- //更新LCD显示
- void camera_refresh(void)
- {
- u32 j;
- u16 color;
- if(ov_sta==2)
- {
- LCD_Scan_Dir(U2D_L2R); //从上到下,从左到右
- LCD_SetCursor(0x00,0x0000); //设置光标位置
- LCD_WriteRAM_Prepare(); //开始写入GRAM
- OV7670_CS=0;
- OV7670_RRST=0; //开始复位读指针
- OV7670_RCK=0;
- OV7670_RCK=1;
- OV7670_RCK=0;
- OV7670_RRST=1; //复位读指针结束
- OV7670_RCK=1;
- for(j=0;j<76800;j++)
- {
- GPIOB->CRL=0X88888888;
- OV7670_RCK=0;
- color=OV7670_DATA; //读数据
- OV7670_RCK=1;
- color<<=8;
- OV7670_RCK=0;
- color|=OV7670_DATA; //读数据
- OV7670_RCK=1;
- GPIOB->CRL=0X33333333;
- LCD_WR_DATA(color);
- }
- OV7670_CS=1;
- OV7670_RCK=0;
- OV7670_RCK=1;
- EXTI->PR=1<<15; //清除LINE8上的中断标志位
- ov_sta=0; //开始下一次采集
- ov_frame++;
- LCD_Scan_Dir(DFT_SCAN_DIR); //恢复默认扫描方向
- }
- }
- //文件名自增(避免覆盖)
- //组合成:形如"0:PHOTO/PIC13141.bmp"的文件名
- void camera_new_pathname(u8 *pname)
- {
- u8 res;
- u16 index=0;
- while(index<0XFFFF)
- {
- sprintf((char*)pname,"0:PHOTO/PIC%05d.bmp",index);
- res=f_open(ftemp,(const TCHAR*)pname,FA_READ);//尝试打开这个文件
- if(res==FR_NO_FILE)break; //该文件名不存在=正是我们需要的.
- index++;
- }
- }
复制代码
|