最近在学习 DCMI接口 通过DMA将DCMI接口中的数据传送到内存中的一个数组中,DCMI 和 DMA都有自己的中断入口,DCMI有行同步中断 和帧同步中断,这两个中断都可以自动进入,但DMA2的传送完毕中断就是进不去,我知道DCMI中有个函数可以置位CAPTURE位,这个位可以通知DMA起动传送,我置为了可DMA2的中断就是没响应!

void DCMI_Config(void)
{
DCMI_InitTypeDef DCMI_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
DMA_InitTypeDef DMA_InitStructure;
//使能DAMI 的GPIO时钟
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB |
RCC_AHB1Periph_GPIOC, ENABLE);
//使能DCMI时钟
RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_DCMI, ENABLE);
//连接DCMI管脚到AF13功能 
GPIO_PinAFConfig(GPIOA, GPIO_PinSource4, GPIO_AF_DCMI);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_DCMI);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource6, GPIO_AF_DCMI);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource7, GPIO_AF_DCMI);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource8, GPIO_AF_DCMI);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource9, GPIO_AF_DCMI);
GPIO_PinAFConfig(GPIOC, GPIO_PinSource6, GPIO_AF_DCMI);
GPIO_PinAFConfig(GPIOC, GPIO_PinSource7, GPIO_AF_DCMI);
GPIO_PinAFConfig(GPIOC, GPIO_PinSource8, GPIO_AF_DCMI);
GPIO_PinAFConfig(GPIOC, GPIO_PinSource9, GPIO_AF_DCMI);
GPIO_PinAFConfig(GPIOC, GPIO_PinSource11, GPIO_AF_DCMI);
// DCMI GPIO 配置
// D0..D4(PC6/7/8/9/11)
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 |
GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_11;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP ;
GPIO_Init(GPIOC, &GPIO_InitStructure);
// D5..D7(PB6/8/9), VSYNC(PB7) 
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;
GPIO_Init(GPIOB, &GPIO_InitStructure);
// PCLK(PA6) HSYNC(PA4) 
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
// DCMI 配置
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;
DCMI_InitStructure.DCMI_ExtendedDataMode = DCMI_ExtendedDataMode_8b;
DCMI_Init(&DCMI_InitStructure);
// 配置 DMA2 传输数据从DCMI 到 LCD 
// 使能 DMA2 时钟
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE);
//DMA2 Stream1 配置
DMA_DeInit(DMA2_Stream1);
DMA_InitStructure.DMA_Channel = DMA_Channel_1;
DMA_InitStructure.DMA_PeripheralBaseAddr = DCMI_DR_ADDRESS;
DMA_InitStructure.DMA_Memory0BaseAddr = FSMC_LCD_ADDRESS;
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;
DMA_InitStructure.DMA_BufferSize = 1;
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable;
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
DMA_InitStructure.DMA_Priority = DMA_Priority_High;
DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Enable;
DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full;
DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
DMA_Init(DMA2_Stream1, &DMA_InitStructure);
}
你看下这个配置,这是DCMI驱动ov7670的配置

你的DMA中断没有设置
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
NVIC_InitStructure.NVIC_IRQChannel = DMA2_Stream1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 
NVIC_Init(&NVIC_InitStructure); 
在DMA初始化完成之后把这几句加上,相应的部分要修改。你在试试

DCMI 接口DMA 传送数据问题相关推荐

  1. postman的批量传送数据和接口关联

    一:批量传送数据 1.在本地创建一个文本文档,上面写入我们的数据. ①手机号②key值③返回值 2.在postman里面接受我们的数据,用{{变量名}} 3.因为咱们的手机号和keys值都接收了,那个 ...

  2. 小新Air15的USB接口只能充电,不能传送数据

    小新Air15的右侧有两个usb接口,两个都能传送数据,其中上方的能给外部供电. 问题:在外接usb网口转换器时,发现插上没反应. 解决方案:进设备管理器,将有问题的驱动卸载,然后重启电脑即可 建议: ...

  3. STM32输入捕获模式设置并用DMA接收数据

    参考: STM32的PWM输入模式设置并用DMA接收数据 Input capture mode The input stage samples the corresponding TIx input ...

  4. 两台主机经过路由器传送数据的网络原理

    假设两台主机通过路由器相连. 假定主机1的应用进程AP1向主机2的应用进程AP2传送数据.AP1先将其数据交给本主机的第5层(应用层).第5层加上必要的控制信息H5就变成了下一层的数据单元.第4层(运 ...

  5. PYNQ开发板使用-使用DMA进行数据搬移(Simple DMA transfer 模式)

    该篇是学习使用PYNQ开发板,实际上是对ZYNQ PL端AXI_CDMA 核的应用.实验步骤参照官网的教程,一步一步地做,但是由于在硬件资源布置方面与官方教程稍有出入,所以在SDK的源码里也进行了修改 ...

  6. 五、ADC如何使用DMA采集数据

    1.DMA数据搬运工 1.1.DMA简介 1.1.1 .DMA的概念 DMA,全称为:Direct Memory Access,即直接存储器访问.DMA传输方式无需CPU直接控制传输, 也没有中断处理 ...

  7. STM32的PWM输入模式设置并用DMA接收数据

    STM32的PWM输入模式设置并用DMA接收数据 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN7 开发环境:MDK4.72 MC ...

  8. php写的接口返回数据的页面,PHP怎么解析 WEBSERVICES接口返回的数据

    PHP如何解析 WEBSERVICES接口返回的数据 WEBSERVICE服务器,他们用.net写了个接口 http://XXX.XXX.XXX.XX/Info.asmx?wsdl 我用PHP调用这个 ...

  9. 使用ViewBag传送数据从控制器至视图

    前一篇<ASP.NET MVC读取XML并使用ViewData显示>http://www.cnblogs.com/insus/p/4308740.html 中,在控制器中使用了ViewDa ...

  10. Statement接口实现查询数据、添加数据

    本文介绍了Statement接口实现查询数据.添加数据.在JDBC的基本应用中,介绍了使用Statement接口查询和添加数据的步骤.重点在于使用getConnection()方法来连接数据库,创建S ...

最新文章

  1. poj1129Channel Allocation
  2. 【Ethereum】以太坊ERC20 Token标准完整说明
  3. Docker监控方案(TIG)的研究与实践之Influxdb
  4. c++ map 函数
  5. kylin: build cube Hbase: Region Server 意外退出
  6. python基础之字符串定义常见操作、列表定义进阶操作
  7. OpenEuler系统是什么
  8. GARFIELD@05-02-2005
  9. NPAPI中返回一个字串的正确做法
  10. MATLAB—隐函数绘图
  11. echarts 柱状图颜色及渐变色设置
  12. APP登录界面UI设计欣赏
  13. 计算机网络技术在实践中应用,计算机网络技术及在实践中的具体应用
  14. Wireshark抓包及常用过滤方法
  15. 飞机一般是什么操作系统?
  16. 安装客户端出现More information at://nsis.sf.net/nsis_error
  17. java执行sql列名无效_sqlserver列名无效调试及解决方法
  18. 封闭式基金最新折价率排行(20060922)[ZT]
  19. SpringBoot+vue3对接支付宝支付详细教程
  20. Latex 固定图片的位置

热门文章

  1. shader函数整理
  2. (5)树莓派+1个USB有线网卡+1个USB无线网卡做路由器
  3. word页面顺序倒过来_WORD2010双面打印出来的是倒过来的,不是按顺序的怎么设置...
  4. 如何在vue项目中使用styl
  5. OTA频发的“大数据杀熟”,想要治你不容易?
  6. Gitlab-Runner安装并注册
  7. 坚果种类和营养价值排名
  8. Make menuconfig详解(转)
  9. CAD绘图的基本步骤和重点
  10. AKULAKU笔试题(还有1题未答)