网站源码编辑软件网站快速排名
简易照相机
- 1、代码获取
- 2、代码修改
- 3、API简介
- 3.1 图片转化保存
- 3.2 内存释放
- 4 、代码修改
- 4.1 主函数代码
- 5 、照片展示
使用Maix Bit的摄像头、SD卡、文件系统和LCD实现一个简易的照相机。使用BOOT按键进行拍照,之后将照片存储在SD卡上面。
SPI and DMAC usage:
SPI0 - LCD
SPI1 - SD card
SPI2 - unused
SPI3 - Flash
DMAC Channel 0 - LCD
DMAC Channel 1 - SD card
1、代码获取
在我前面一篇博客里面简述了代码如何下载以及使用。https://blog.csdn.net/weixin_45488643/article/details/109990336如有需要自行查看。
2、代码修改
首先自己先创建一个新的工程文件,然后将dvp2sdcard文件夹下面的代码复制到自己创建的文件夹下面:
安装依赖库文件:
比较重要的一点,开启控制:
打开board_config.h 我自己使用的是Maix bit 开发板,所以选择如下配置文件,根据需要选择自己的开发板硬件配置。
3、API简介
LCD、SD和文件系统的常用API前面的博客已经介绍过了,如有兴趣,自行查看。
3.1 图片转化保存
int rgb565tobmp(uint8_t *buf,int width,int height, const char *filename)
*buf 保存的数据; width、height图片大小;*filename图片保存路径
3.2 内存释放
void iomem_free(void *paddr)
*paddr 空间地址
4 、代码修改
使用标志来保存数据。
static uint32_t NUM = 0;
char buf[80];
目前可以保存9999张照片,保存更多自行修改。
4.1 主函数代码
#include <stdio.h>
#include <string.h>#include "board_config.h"
#include "dvp.h"
#include "ff.h"
#include "fpioa.h"
#include "gpiohs.h"
#include "iomem.h"
#include "lcd.h"
#include "nt35310.h"
#include "ov2640.h"
#include "ov5640.h"
#include "plic.h"
#include "rgb2bmp.h"
#include "sdcard.h"
#include "sysctl.h"
#include "uarths.h"/* SPI and DMAC usage** SPI0 - LCD* SPI1 - SD card* SPI2 - unused* SPI3 - Flash** DMAC Channel 0 - LCD* DMAC Channel 1 - SD card**/#define KEY_GPIONUM 0uint32_t *g_lcd_gram0;
uint32_t *g_lcd_gram1;volatile uint8_t g_dvp_finish_flag;
volatile uint8_t g_ram_mux;
volatile uint8_t g_save_flag;void irq_key(void *gp) { g_save_flag = 1; }static int on_irq_dvp(void *ctx) {if (dvp_get_interrupt(DVP_STS_FRAME_FINISH)) {/* switch gram */dvp_set_display_addr(g_ram_mux ? (uint32_t)g_lcd_gram0: (uint32_t)g_lcd_gram1);dvp_clear_interrupt(DVP_STS_FRAME_FINISH