注册会员
- 积分
- 85
- 威望
- 57
- 贡献
- 12
- 兑换币
- 18
- 注册时间
- 2016-7-10
- 在线时间
- 8 小时
- 毕业学校
- 厦门大学
|
2#
楼主 |
发表于 2016-9-25 19:14:35
|
只看该作者
void PORTA_IRQHandler(void)//场中断
{
GPIO_ClearITPendingBit(CAMERA_VSYNC_PORT,CAMERA_VSYNC_PIN);
//有效行,总行数清0
CAMERADev.HREFCnt = 0;
CAMERADev.HREFITCnt = 0;
// PORTA->ISFR|=PORT_ISFR_ISF_MASK; //清除场中断标志位
NVIC_EnableIRQ(PORTD_IRQn);//开启行中断
}
void PORTD_IRQHandler(void)//行中断
{
uint8_t i = 0;
GPIO_ClearITPendingBit(CAMERA_HREF_PORT,CAMERA_HREF_PIN);
//行计数
if(CAMERADev.HREFITCnt==*(Choose_Hang+count_hang))//需要的行
{
DMA_SetEnableReq (DMA_CH0,ENABLE);//设置DMA模块请求,开启传输
for(i=0;i<CCD_IMAGE_W;i++)
{
*(*(Pixels+CAMERADev.HREFCnt)+i)=*(DMABuffer+(*(Choose_Lie+i)));//200 //*4这个参数很重要 决定图像宽度 //数据没有倒回来
}
count_hang++;
CAMERADev.HREFCnt++;//行计数有效值
}
//当行数足够时关闭行中断
if( CAMERADev.HREFITCnt>=*(Choose_Hang + 69))
{
count_hang=0;
TransferFlag = 1;//完成一场的传输的标志
NVIC_DisableIRQ(PORTD_IRQn);
}
CAMERADev.HREFITCnt++;//
// PORTD->ISFR|=PORT_ISFR_ISF_MASK; //清除中断标志位
}
void DMA0_IRQHandler(void)
{
for(E_count_hang = 0;E_count_hang< 200;E_count_hang ++)
{
if(*(DMABuffer+(*(Choose_Lie+E_count_hang)))>= 128)
{
*(DMABuffer+(*(Choose_Lie+E_count_hang)))=1;
}
else
{
*(DMABuffer+(*(Choose_Lie+E_count_hang)))=0;
}
}
DMA0->TCD[DMA_CH0].DADDR = (uint32_t)DMABuffer; //
DMA_ClearITPendingBit(DMA0,DMA_IT_MAJOR,DMA_CH0);//清除中断标志位
}
|
|