DCMI相机(JPG+BMP)

2019-07-21 08:00发布

    GD STM32F407学习板新增例程,DCMI相机,在原来的基础上增加JPG编码保存,320*240照片效果图如下,按下键1保存为BMP格式,按下键2保存为JPG格式,工程源码上传。嘿嘿,准备暑假也来写个PDF学习笔记,主要把重点放在用F4做图像与音频处理这一块。


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
43条回答
opoop130
1楼-- · 2019-07-22 10:27
求相机的学习笔记!
骤雨龙元
2楼-- · 2019-07-22 15:18
 精彩回答 2  元偷偷看……
zsx_op
3楼-- · 2019-07-22 20:41
我就是想存在ram中,但是设置方式可能不对存到的数据一点点都收不到。用串口打印出来就是0xffff ffff 。这是初始化的数值。  DCMI_InitStructure.DCMI_CaptureMode = DCMI_CaptureMode_Continuous;  //连续模式  DCMI_InitStructure.DCMI_SynchroMode = DCMI_SynchroMode_Hardware;  //嵌入式   DCMI_InitStructure.DCMI_PCKPolarity = DCMI_PCKPolarity_Falling;     //下降沿   DCMI_InitStructure.DCMI_VSPolarity = DCMI_VSPolarity_High;  //垂直同步极性   DCMI_InitStructure.DCMI_HSPolarity = DCMI_HSPolarity_High;  //水平同步极性   DCMI_InitStructure.DCMI_CaptureRate = DCMI_CaptureRate_All_Frame;  //帧捕捉频率:所有,1/2或1/4 DCMI_CaptureRate_All_Frame   DCMI_InitStructure.DCMI_ExtendedDataMode = DCMI_ExtendedDataMode_8b;//指定数据宽度:8位,10位,12位或14位      DCMI_Init(&DCMI_InitStructure);
  /* DCMI Interrupts config ***************************************************/   DCMI_ITConfig(DCMI_IT_VSYNC, ENABLE);   DCMI_ITConfig(DCMI_IT_LINE, ENABLE);   DCMI_ITConfig(DCMI_IT_FRAME, ENABLE);   DCMI_ITConfig(DCMI_IT_ERR, ENABLE);          NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);   NVIC_InitStructure.NVIC_IRQChannel = DCMI_IRQn;   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;     NVIC_Init(&NVIC_InitStructure); 
  /* Configures the DMA2 to transfer Data from DCMI to the LCD ****************/   /* Enable DMA2 clock */   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE);        /* DMA2 Stream1 Configuration */     DMA_DeInit(DMA2_Stream1);
  DMA_InitStructure.DMA_Channel = DMA_Channel_1;                          //dma流通道   DMA_InitStructure.DMA_PeripheralBaseAddr = DCMI_DR_ADDRESS;               //外设地址   DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)&pixel_data;            //内存地址
  DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;            //外设到内存   DMA_InitStructure.DMA_BufferSize = 38400;            //数据大小   DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;          //指定外设地址寄存器是否应增加或不   DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;        //指定内存地址寄存器是否应增加或不   DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte; //外设地址数据长度   DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte; //内存地址数据长度   DMA_InitStructure.DMA_Mode = DMA_Mode_Normal; //运行模式    DMA_Mode_Normal  DMA_Mode_Circular      DMA_InitStructure.DMA_Priority = DMA_Priority_High; //优先模式  Low  Medium  High  VeryHigh    DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;            //FIFO   DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full; //FIFO的阈值水平   DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;    //内存单通道   DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single; //外设单通道         DMA_Init(DMA2_Stream1, &DMA_InitStructure);  }


这是dma  dcmi的初始化。帮我看看这个哪里有问题了。


void DCMI_IRQHandler(void) {         if (DCMI_GetITStatus(DCMI_IT_VSYNC) != RESET)  //帧同步输入 {    LCD_SetCursor(0,0); LCD_REG = 0x0022;   if(count>0)      count--; if(count == 0 ) {   count = 15; flag = 1;   DCMI_Cmd(DISABLE); DCMI_CaptureCmd(DISABLE);    printf(" ");  printf(" ");  printf(" "); printf(" "); printf(" ");   } DCMI_ClearITPendingBit(DCMI_IT_VSYNC);        }  if (DCMI_GetITStatus(DCMI_IT_LINE) != RESET)  { DCMI_ClearITPendingBit(DCMI_IT_LINE); } if (DCMI_GetITStatus(DCMI_IT_FRAME) != RESET) //帧同步输入 {    DCMI_ClearITPendingBit(DCMI_IT_FRAME);  } if (DCMI_GetITStatus(DCMI_IT_ERR) != RESET)  { DCMI_ClearITPendingBit(DCMI_IT_ERR); } }



这是中断函数。








lcc8559
4楼-- · 2019-07-22 23:54
  可以自己做相机了。
zhanggenftf
5楼-- · 2019-07-23 05:45
mark!!
lixupeng
6楼-- · 2019-07-23 11:19
好东东 mark

一周热门 更多>