亚博k210 按键 存储图片到sd卡中
目前只完成了初步功能,存储到sd卡过程中有时候会卡死在f_open函数中。
如果有大佬知道咋解决问题,麻烦告诉我一下,万分感激。
#include <String.h>
#include <stdlib.h>
#include <stdio.h>
#include “unistd.h”
#include “rgb2bmp.h”
#include “ff.h”
#include “sdcard.h”
#include “lcd.h”
BmpHead m_BMPHeader;
InfoHead m_BMPInfoHeader;
FIL file;
FRESULT ret = FR_OK;
unsigned char bmp_buffer[CAM_WIDTH_PIXELCAM_HIGHT_PIXEL3]; //bmp图像数据地址
int sd_check_(void)
{
if (check_sdcard())
{
lcd_draw_string(16, 120, “sdcard err”, RED);
return -1;
}
if (check_fat32())
{
lcd_draw_string(16, 120, "fat32 err", RED);
return -2;
}
bmp_init();
return 0;
}
void bmp_init(void) //初始化bmp图像头
{
m_BMPHeader.bfType[0]=‘B’;
m_BMPHeader.bfType[1]=‘M’;
m_BMPHeader.imageSize=CAM_WIDTH_PIXELCAM_HIGHT_PIXEL3+54;
m_BMPHeader.blank=0;
m_BMPHeader.startPosition=54;
m_BMPInfoHeader.Length=40;
m_BMPInfoHeader.width=CAM_WIDTH_PIXEL;
m_BMPInfoHeader.height=-CAM_HIGHT_PIXEL; //正负可以改变图片的上颠倒 -值为正向
m_BMPInfoHeader.colorPlane=1;
m_BMPInfoHeader.bitColor=24;
m_BMPInfoHeader.zipformat=0;
m_BMPInfoHeader.realSize=3*CAM_WIDTH_PIXEL*CAM_HIGHT_PIXEL;
m_BMPInfoHeader.xPels=0;
m_BMPInfoHeader.yPels=0;
m_BMPInfoHeader.colorUse=0;
m_BMPInfoHeader.colorImportant=0;
}
void rgb2bmparry(uint32_t rgb_buffer)
{
//rgb 转数组 找出rgb数据
long nData = (CAM_WIDTH_PIXELCAM_HIGHT_PIXEL)/2;//这里的rgb_buffer为32位存储有两个rgb565数据
unsigned char* pVisit = bmp_buffer;
long i =0;
unsigned char R,G,B;
uint16_t rgb_buffer_tmp;
printf("****save end1***\n");
while(i<nData) //这里的rgb_buffer为32位存储有两个rgb565数据
{
rgb_buffer_tmp = *rgb_buffer&0xffff; //取出低16位
R = rgb_buffer_tmp&0x1f;
G = (rgb_buffer_tmp>>5)&0x3f;
B = (rgb_buffer_tmp>>11)&0x1f;
B = B<