金牌会员
- 积分
- 1238
- 威望
- 626
- 贡献
- 390
- 兑换币
- 395
- 注册时间
- 2015-3-27
- 在线时间
- 111 小时
- 毕业学校
- 金华大学
|
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);
}
}
用的拉普兰德的库
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|