智能车制作

标题: 万能的车友啊,有人用摄像头的时候遇到过这个问题吗,能不能帮我看看 [打印本页]

作者: 陈涉太息曰:    时间: 2016-4-12 17:20
标题: 万能的车友啊,有人用摄像头的时候遇到过这个问题吗,能不能帮我看看
void cam_dma_init()
{
  //DMA参数配置
  dma_init.DMA_CHx = DMA_CH0;    //CH0通道
  dma_init.DMA_Req = PORTC_DMAREQ;       //PORTE为请求源
  dma_init.DMA_MajorLoopCnt = 120*188; //主循环计数值
  dma_init.DMA_MinorByteCnt = 1; //次循环字节计数:每次读入1字节
  dma_init.DMA_SourceAddr = (uint32)&PTC->PDIR+1;        //源地址:PTD8~15
  dma_init.DMA_DestAddr = (uint32)image_h;      //目的地址:存放图像的数组
  dma_init.DMA_DestAddrOffset = 1;       //目的地址偏移:每次读入增加1
  dma_init.DMA_AutoDisableReq = TRUE;    //自动禁用请求
  dma_init.DMA_LastDestAddrAdj = -120*188;
  dma_init.DMA_MajorCompleteIntEnable = TRUE;
  dma_init.DMA_Isr = dmaisr;
  //初始化DMA
  LPLD_DMA_Init(dma_init);
}

void portc6_isr()
{
    if(LPLD_GPIO_IsPinxExt(PORTC, GPIO_Pin6))
  {
    //检测到场开始信号

    LPLD_DMA_EnableReq(DMA_CH0);
    LPLD_DMA_EnableIrq(dma_init);
    enable_irq(PORTC_IRQn);
    LPLD_GPIO_ClearIntFlag(PORTC);//清中断标志,防止进入无效中断

  }
}

void dmaisr()//dma中断
{
    uint16 copy;
    flag_finish = 1;
    //disable_irq(PORTC_IRQn);
    //消除黑边,使用内存移动函数,左边右边各消除一列
    for(copy=0; copy<120; copy++)//大约200US
    {
        memcpy(&image[copy][0],&image_h[copy][1],186);
    }
}

用的拉普兰德的库



作者: 2862356756    时间: 2016-4-19 21:29
你解决了么
作者: 陈涉太息曰:    时间: 2016-4-20 12:05
2862356756 发表于 2016-4-19 21:29
你解决了么

不知道为什么,然后换了个库用。。。。

作者: 2862356756    时间: 2016-4-20 15:43
陈涉太息曰: 发表于 2016-4-20 12:05
不知道为什么,然后换了个库用。。。。

。。。然后就好了么

作者: 陈涉太息曰:    时间: 2016-4-21 08:08
2862356756 发表于 2016-4-20 15:43
。。。然后就好了么

换成例程了,当然好了,也是挺无奈的

作者: zxguozi    时间: 2016-5-3 14:48
dma_init.DMA_SourceAddr = (uint32)&PTC->PDIR+1;        //源地址:PTD8~15,如果用PTD0-7的话,要把PDIR后面的+1去掉吧?
作者: 陈涉太息曰:    时间: 2016-5-3 22:27
zxguozi 发表于 2016-5-3 14:48
dma_init.DMA_SourceAddr = (uint32)&PTC->PDIR+1;        //源地址:PTD8~15,如果用PTD0-7的话,要把PDIR ...

因为实际用的是PTC8-15的,后面注释忘改了,。。不过还是谢谢了





欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2