本帖最后由 爬上阁楼的鱼 于 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 摄像头是逐飞的总钻风 似乎就差那么一点点问题无法把数据读完整 跪求大家帮帮忙啊
原来的方法每次一行,dma中断后再关闭dma再等待dma可配置再配好的时间好像太长了,所以总有错过没采集到的地方于是就出现了半传输中断(貌似),只要把一次传输的数据改为一帧的分辨率就可以一次传输一整张画面 然后dma中断后直接用就好啦
各位+ @正点原子
初始化没有打开半传送 只是仿真的时候看到标志位置一了 而且照样进了中断 所以我就在中断里检测了一下那个标志并清零了
这是我的中断函数
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
求各位大大 and @正点原子 大大
就是不太清除半传输中断到底是什么
一周热门 更多>