|
10黑幣
本帖最后由 瘋子本人 于 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++;
- }
- }
復制代碼
|
|