中级会员
 
- 积分
- 431
- 威望
- 203
- 贡献
- 122
- 兑换币
- 111
- 注册时间
- 2013-8-20
- 在线时间
- 53 小时
- 毕业学校
- 浙江工业大学
|
5#

楼主 |
发表于 2015-2-4 14:02:20
|
只看该作者
make1573 发表于 2015-2-4 10:18 ![]()
边采集边发送肯定会出现重复情况
//main.c中串口接收部分
while(1)
{
uart_putchar(UART4,0xFF); //图像头
for(i=0; i<ROW; i++)
{
for(j=0;j<COL ;j++)
{
if(ImageBuf[j] == 0xFF) ImageBuf[j]--;
uart_putchar(UART4,ImageBuf[j]);
}
}
EnableInterrupts;
}
//isr.c
extern u32 rowCnt; //行计数
extern u8 ImageBuf[ROW][COL];
u8 SampleFlag = 0;
void PORTA_IRQHandler()
{
//---HREF行中断处理
if( PORTA_ISFR & (1 << 16)) //PTA16触发中断
PORTA_ISFR |= (1 << 16); //写1清中断标志位
if ( SampleFlag == 0 ) //不足一场时返回
{
return;
}
//-------------DAM初始化通道4,数据源为PTD,每次存在数组ImageBuf[]指针中,PCLK接PTE5触发,每次传输1个字节,每次触发传输320次,上升沿触发
DMA_PORTx2BUFF_Init (DMA_CH4, (void *)&PTD_BYTE0_IN, ImageBuf[rowCnt], PTE5, DMA_BYTE1, COL, DMA_rising); //一行中断采列数 DMA下降沿触发
//----使能DMA,初始化的时候禁止DMA
DMA_EN(DMA_CH4);
rowCnt++;
if(rowCnt == ROW) //行计数
{
rowCnt = 0;
DMA_DIS(DMA_CH4); //关DMA
disable_irq(87);//关行
enable_irq(88);//开场
DisableInterrupts;
SampleFlag = 0;
}
}
//通道4
void DMA_CH4_Handler(void)
{
//DMA通道4
DMA_IRQ_CLEAN(DMA_CH4); //清除通道传输中断标志位 (这样才能再次进入中断)
DMA_IRQ_DIS(DMA_CH4); //禁止DMA 等待下一次行中断来临开启DMA
}
//---VSYN场中断处理
void PORTB_IRQHandler()
{
if(PORTB_ISFR & (1 << 0)) //PTB0触发中断 场中断
{
PORTB_ISFR |= (1 << 0); //写1清中断标志位
disable_irq(88);//关场中断
enable_irq(87);//开行中断
rowCnt = 0;
SampleFlag = 1;
}
}
|
|