常驻嘉宾
- 积分
- 4936
- 威望
- 2451
- 贡献
- 1463
- 兑换币
- 1663
- 注册时间
- 2013-9-21
- 在线时间
- 511 小时
|
lifuxian1994 发表于 2015-2-6 18:30
在if(rowCnt == ROW)里 复制数组不就是把整幅图复制的么?
你也是用的岱默的吧,我的程序,不过还不是最佳方案
void PORTA_IRQHandler()
{
//---HREF行中断处理
if (rowCnt==0)
SampleFlag=0;
if( PORTA_ISFR & (1 << 9)) //PTA9触发中断
{
HREFflag++;
PORTA_ISFR |= (1 << 9); //写1清中断标志位
if (HREFflag==1)
{
HREFflag=0;
//
//-------------DAM初始化通道4,数据源为PTD,每次存在数组ImageBuf[]指针中,PCLK接PT19触发,每次传输1个字节,每次触发传输320次,上升沿触发
DMA_PORTx2BUFF_Init (DMA_CH4, (void *)&PTD_BYTE0_IN, ImageBuf[rowCnt], PTC19, DMA_BYTE1, COL, DMA_rising);
//----使能DMA,初始化的时候禁止DMA
DMA_EN(DMA_CH4);
rowCnt++;
SampleFlag=2;
if(rowCnt >= ROW)
{
rowCnt = 0;
DMA_DIS(DMA_CH4);
//---------若为动态显示,删除此行------------//
DisableInterrupts;
}
}
}
//---VSYN场中断处理
if(PORTA_ISFR & (1 << 27)) //PTA27触发中断 场中断
{
PORTA_ISFR |= (1 << 27); //写1清中断标志位
rowCnt = 0;
SampleFlag = 1;
}
}
主函数:
while(1)
{
//DisableInterrupts;
if (SampleFlag == 1)
{
uart_putchar(UART1,0xFF); //图像头
for(i=0; i<ROW/4; i++)
{
for(j=0;j<COL/6 ;j++)
{
if(ImageBuf[i*4][j*6] == 0xFF) ImageBuf[i*4][j*6]--;
uart_putchar(UART1,ImageBuf[i*4][j*6]);
}
}
}
EnableInterrupts;
}
|
|