我用的是STM32,图片读出来以后,通过串口发送到电脑上显示成这样
tica, SimSun, sans-serif">贴上代码,弄了一个月了也没搞定,对于高手来说应该很简单
void EXTI0_IRQHandler(void){
EXTI->PR=1<<0;
LED_Out(3);
Vsync_Flag++;
if(Vsync_Flag==1) //FIFO写指针复位
{
FIFO_WRST=0;
delay_us(100);
FIFO_WRST=1;
FIFO_WR=1;
}
if(Vsync_Flag==2){
FIFO_WR=0; //禁止CMOS数据写入FIFO
EXTI->IMR&=~(1<<0); //禁止外部中断,准备从FIFO中取数据
EXTI->EMR&=~(1<<0);
LED_Out(1);
FIFO_RRST =0; //读指针复位
FIFO_RCK =0; //至少需要一个时钟周期的跳变才能复位
FIFO_RCK =1;
FIFO_RCK =0;
FIFO_RCK =1;
FIFO_RRST =1;
FIFO_OE = 0;
for(i = 0; i < 240; i ++)
{
for(j = 0; j < 320; j ++)
{
FIFO_RCK =0;
__nop();
__nop();
t1=(0x00ff&GPIOD->IDR); //高8位
FIFO_RCK =1;
__nop();
__nop();
FIFO_RCK =0;
__nop();
__nop();
t2=(0x00ff&GPIOD->IDR);
FIFO_RCK =1;
__nop();
__nop();
//串口发送
USART1->DR=t1;
while((USART1->SR&0X40)==0);
USART1->DR=t2;
while((USART1->SR&0X40)==0);
}
}
LED_Out(2);
FIFO_OE=1;
FIFO_WR=0;
Vsync_Flag = 0; //开始下一帧数据采集
EXTI->IMR|=1<<0; //允许外部中断,以便接收下帧图像数据
EXTI->EMR|=1<<0;
}
}
上位机是320×240,stm32读出来数据,字节逐个发送到了串口,就是不知道按照什么次序读,刚开始按照 左-右-上-下 的顺序读取像素点的,发现图像全是条纹,后来改成 上-下-左-右的顺序,就变成现在的 {MOD}块了。应该用什么顺序读取呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>