金牌会员
- 积分
- 1616
- 威望
- 839
- 贡献
- 523
- 兑换币
- 503
- 注册时间
- 2015-7-19
- 在线时间
- 127 小时
- 毕业学校
- 湖北民族学院
|
捕食者摄像头的初始化:D12-PCLK D15-FOOD(奇数场中断) D13-HREF Y0-Y7---E0-E7void camera_Init()
{
DMA_InitTypeDef DMA_InitStruct1 ;
DMA_InitStruct1.chl = HW_DMA_CH2;
DMA_InitStruct1.chlTriggerSource = PORTD_DMAREQ;//选取触发源
DMA_InitStruct1.triggerSourceMode = kDMA_TriggerSource_Normal;
DMA_InitStruct1.minorLoopByteCnt = 1;//没次传输一个字节
DMA_InitStruct1.majorLoopCnt = OV7725_H;
DMA_InitStruct1.sAddr =(uint32_t)&PTE->PDIR;
DMA_InitStruct1.sLastAddrAdj = 0;
DMA_InitStruct1.sAddrOffset = 0;
DMA_InitStruct1.sDataWidth = kDMA_DataWidthBit_8;
DMA_InitStruct1.sMod = kDMA_ModuloDisable;
DMA_InitStruct1.dAddr = (uint32_t)&buffdata[0];
DMA_InitStruct1.dLastAddrAdj = 0;
DMA_InitStruct1.dAddrOffset = 1;
DMA_InitStruct1.dDataWidth = kDMA_DataWidthBit_8;
DMA_InitStruct1.dMod = kDMA_ModuloDisable;
DMA_Init(&DMA_InitStruct1);
//场中断
GPIO_QuickInit(HW_GPIOD,15,kGPIO_Mode_IPU);
//行中断
GPIO_QuickInit(HW_GPIOD,13,kGPIO_Mode_IPU);
//时钟
GPIO_QuickInit(HW_GPIOD,12,kGPIO_Mode_IPU);
/* 设置GPIO外部引脚中断回调函数 */
GPIO_CallbackInstall(HW_GPIOD, GPIO_ISR);
/* 打开PTD引脚的中断 上升沿触发 */
GPIO_ITDMAConfig(HW_GPIOD, 15, kGPIO_IT_FallingEdge, true);//下降沿触发
GPIO_ITDMAConfig(HW_GPIOD, 12, kGPIO_DMA_RisingEdge,true);
//数据输入端配置
GPIO_QuickInit(HW_GPIOE,0,kGPIO_Mode_IPU);
GPIO_QuickInit(HW_GPIOE,1,kGPIO_Mode_IPU);
GPIO_QuickInit(HW_GPIOE,2,kGPIO_Mode_IPU);
GPIO_QuickInit(HW_GPIOE,3,kGPIO_Mode_IPU);
GPIO_QuickInit(HW_GPIOE,4,kGPIO_Mode_IPU);
GPIO_QuickInit(HW_GPIOE,5,kGPIO_Mode_IPU);
GPIO_QuickInit(HW_GPIOE,6,kGPIO_Mode_IPU);
GPIO_QuickInit(HW_GPIOE,7,kGPIO_Mode_IPU);
}
中断函数:DMA将数据传到buffdata里
static void GPIO_ISR(uint32_t array)
{
if(array&(1<<13))//行中断触发
{
GPIO_ITDMAConfig(HW_GPIOD, 13, kGPIO_IT_FallingEdge, false);
if(line >= OV7725_W)
{
DMA_Over_flg=1;
}
else
{
DMA_SetDestAddress(HW_DMA_CH2,(uint32_t)buffdata[line++]);
DMA_SetMajorLoopCounter(HW_DMA_CH2, OV7725_H);
/* 启动传输 */
DMA_EnableRequest(HW_DMA_CH2);
}
GPIO_ITDMAConfig(HW_GPIOD, 13, kGPIO_IT_FallingEdge, true);
}
if(array&(1<<15))
{
GPIO_ITDMAConfig(HW_GPIOD, 13, kGPIO_IT_FallingEdge, false);
GPIO_ITDMAConfig(HW_GPIOD, 15, kGPIO_IT_FallingEdge, false);
line=0;
GPIO_ITDMAConfig(HW_GPIOD, 13, kGPIO_IT_FallingEdge, true);
GPIO_ITDMAConfig(HW_GPIOD, 15, kGPIO_IT_FallingEdge, true);
}
}
问题是DMA没有工作,我仿真看PE的PDIR是有数据的,而且数据是对的,就是DMA没有将数据传到bufdata中
|
|