找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2284|回复: 3
收起左侧

关于stm32mini实现拍照功能

[复制链接]
ID:405033 发表于 2019-9-30 17:29 | 显示全部楼层 |阅读模式
10黑币
本帖最后由 疯子本人 于 2019-10-3 16:47 编辑

想用mini板实现照相机功能,将一些文件添加好了之后,发现出现了问题,报错是出现在写入文件错误这里,跟进去之后发现这个if(res==FR_OK)没进去,对此有点疑惑,搞不清是哪里出问题了,特此来寻求各位的帮助。以下是程序

整个文件没报错,初始化也成功了,ov7670摄像头也可以拍照,但是就是用bmp截屏的时候会出现错误,有大佬帮忙解答一下吗(用的是ov7670摄像头与stm32mini板),是bmp函数出现问题了吗,可是是从其他例程直接移植过来的呀,求救求救

单片机源程序如下:
  1. #include "sys.h"
  2. #include "usart.h"  
  3. #include "delay.h"
  4. #include "led.h"   
  5. #include "lcd.h"
  6. #include "usmart.h"
  7. #include "ff.h"  
  8. #include "flash.h"
  9. #include "exfuns.h"   
  10. #include "text.h"
  11. #include "piclib.h"
  12. #include "string.h"  
  13. #include "math.h"  
  14. #include "ov7670.h"
  15. #include "exti.h"
  16. #include "timer.h"
  17. #include "stm32f10x.h"
  18. #include "key.h"  
  19. #include "malloc.h"
  20. //ALIENTEK Mini STM32开发板扩展实验9

  21. extern u8 ov_sta; //在exit.c里面定义
  22. extern u8 ov_frame; //在timer.c里面定义  
  23. FRESULT res_sd;//文件操作结果
  24. FIL fnew; //文件对
  25. UINT fnum; //文件成功读写数量
  26. //更新LCD显示
  27. void camera_refresh(void)
  28. {
  29. u32 j;
  30.   u16 color;  
  31. if(ov_sta==2)
  32. {
  33.   LCD_Scan_Dir(U2D_L2R);  //从上到下,从左到右
  34.   LCD_SetCursor(0x00,0x0000); //设置光标位置
  35.   LCD_WriteRAM_Prepare();     //开始写入GRAM
  36.    OV7670_CS=0;  
  37.    OV7670_RRST=0;    //开始复位读指针
  38.   OV7670_RCK=0;
  39.   OV7670_RCK=1;
  40.   OV7670_RCK=0;
  41.   OV7670_RRST=1;    //复位读指针结束
  42.   OV7670_RCK=1;  
  43.   for(j=0;j<76800;j++)
  44.   {
  45.    GPIOB->CRL=0X88888888;     
  46.    OV7670_RCK=0;
  47.    color=OV7670_DATA;  //读数据
  48.    OV7670_RCK=1;  
  49.    color<<=8;      
  50.     OV7670_RCK=0;
  51.    color|=OV7670_DATA;  //读数据   
  52.    OV7670_RCK=1;
  53.    GPIOB->CRL=0X33333333;         
  54.    LCD_WR_DATA(color);  
  55.   }  
  56.    OV7670_CS=1;         
  57.   OV7670_RCK=0;
  58.   OV7670_RCK=1;
  59.   EXTI->PR=1<<15;       //清除LINE8上的中断标志位
  60.   ov_sta=0;     //开始下一次采集
  61.    ov_frame++;
  62.   LCD_Scan_Dir(DFT_SCAN_DIR); //恢复默认扫描方向           
  63. }
  64. }
  65. //文件名自增(避免覆盖)
  66. //组合成:形如"0:PHOTO/PIC13141.bmp"的文件名
  67. void camera_new_pathname(u8 *pname)
  68. {  
  69. u8 res;      
  70. u16 index=0;
  71. while(index<0XFFFF)
  72. {
  73.   sprintf((char*)pname,"0:PHOTO/PIC%05d.bmp",index);
  74.   res=f_open(ftemp,(const TCHAR*)pname,FA_READ);//尝试打开这个文件
  75.   if(res==FR_NO_FILE)break;  //该文件名不存在=正是我们需要的.
  76.   index++;
  77. }
  78. }

复制代码




&amp;sup2;&amp;para;&amp;raquo;&amp;ntilde;111.PNG
&amp;sup2;&amp;para;&amp;raquo;&amp;ntilde;.PNG
回复

使用道具 举报

ID:405033 发表于 2019-10-3 16:48 | 显示全部楼层
找到原因了,在网上找了好久的资料,发现还是只能靠自己啊哈哈哈哈哈
回复

使用道具 举报

ID:629110 发表于 2019-10-27 15:01 来自手机 | 显示全部楼层
疯子本人 发表于 2019-10-3 16:48
找到原因了,在网上找了好久的资料,发现还是只能靠自己啊哈哈哈哈哈

楼主代码能发一下吗
回复

使用道具 举报

ID:405033 发表于 2020-1-23 22:34 | 显示全部楼层

过了那么久,想必你也解决了吧,当时的问题是文件创建的问题,加了几句代码就实现了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表