有没有大大知道DMA2半传送是什么啊??

2019-07-20 17:53发布

本帖最后由 爬上阁楼的鱼 于 2016-10-7 10:15 编辑

如题    本来好不容易调好了TIM1捕获加DMA采摄像头  可是出去洗个澡吃个饭回来就挂了   总是半传送中断而没有传输完成中断   有大大遇到过吗??    跪求指点 啊

STM32F4xx_DSP_StdPeriph_Lib_V1.7.1.001.zip (19.8 MB, 下载次数: 121) 2016-10-7 10:08 上传 点击文件名下载附件
STM32F4xx_DSP_StdPeriph_Lib_V1.7.1.002.zip (19.8 MB, 下载次数: 119) 2016-10-7 10:09 上传 点击文件名下载附件
STM32F4xx_DSP_StdPeriph_Lib_V1.7.1.003.zip (14.44 MB, 下载次数: 156) 2016-10-7 10:09 上传 点击文件名下载附件


程序分布在各个.c里   
现在基本上一半多一点传输完成   一半半传送不明白是什么   其次咱不懂如何把临时的那些编译文件删了   体积略大   工程是用IAR打开的   

芯片STM32F407VET6     摄像头是逐飞的总钻风   似乎就差那么一点点问题无法把数据读完整    跪求大家帮帮忙啊
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
爬上阁楼的鱼
2019-07-21 02:50
本帖最后由 爬上阁楼的鱼 于 2016-10-7 10:03 编辑

各位+ @正点原子
初始化没有打开半传送   只是仿真的时候看到标志位置一了  而且照样进了中断  所以我就在中断里检测了一下那个标志并清零了
这是我的中断函数
  if((DMA2->LISR&0x800)==0x800)
  {
    DMA2->LIFCR|=1<<11;                     //清除传输完成中断
    now_row++;
    if(now_row<ROW)   
    {
      //while((USART1->SR&0X40)==0);
      //USART_SendData(USART1,0xa0);
      DMA2_Stream1->CR&=~(1<<0);            //关闭DMA传输  
      while(DMA2_Stream1->CR&0X1);         //确保DMA可以被设置   
      DMA2_Stream1->M0AR=(u32)&image[now_row][0];
      DMA2_Stream1->NDTR=188;               //传输长度为jpeg_buf_size*4字节
      DMA2_Stream1->CR|=1<<0;               //重新传输
    }
    if(now_row >= ROW)        
    {
      //__disable_irq();
      mt9v032_finish_flag = 1;
      GPIOC->BSRRH|=1<<13;                  //初始化在MT9V032_Init();   
      display_188_60();
      while((USART1->SR&0X40)==0);
      USART_SendData(USART1,image[20][29]);   
      //__enable_irq();     
    }
  }
  if((DMA2->LISR&0x200)==0x200)
  {
    DMA2->LIFCR|=1<<9;
   
    while((USART1->SR&0X40)==0);
    USART_SendData(USART1,0xee);
  }
  if((DMA2->LISR&0x400)==0x400)
  {
    DMA2->LIFCR|=1<<10;
    DMA2_Stream1->CR|=1<<0;                   //重新传输
    while((USART1->SR&0X40)==0);
    USART_SendData(USART1,0xea);   
  }



最后串口一直在收0xea

一周热门 更多>