智能车制作

 找回密码
 注册

扫一扫,访问微社区

12
返回列表 发新帖
楼主: 不负时光
打印 上一主题 下一主题

OV7725图像采集问题。。图像采集出来分成两部分,左边有一小条是右边图像的右部。。

[复制链接]

2

主题

20

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
250
威望
128
贡献
88
兑换币
81
注册时间
2016-9-24
在线时间
17 小时
毕业学校
ld
11#
发表于 2017-5-9 19:51:18 | 只看该作者
shen1994 发表于 2017-5-7 10:20
场中断开的时间不对,导致整个时序紊乱

场中断 是怎么开启的  void OV_ISR(uint32_t index)
{
    static uint8_t status = TRANSFER_IN_PROCESS;
    static uint32_t h_counter, v_counter;
    if(index & (1 << BOARD_OV7620_HREF_PIN))
    {
        DMA_SetDestAddress(HW_DMA_CH2, (uint32_t)gpHREF[h_counter++]);

        DMA_SetMajorLoopCounter(HW_DMA_CH2, (OV7620_W/8)+1);
        DMA_EnableRequest(HW_DMA_CH2);

        return;
    }
    if(index & (1 << BOARD_OV7620_VSYNC_PIN))
    {
        DisableInterrupts();

        switch(status)
        {
            case TRANSFER_IN_PROCESS:
                    UserApp(v_counter++);
                    //printf("i:%d %d\r\n", h_counter, i);
                    status = NEXT_FRAME;
                    h_counter = 0;

                break;
            case NEXT_FRAME: // waiting for next transfer
                status =  TRANSFER_IN_PROCESS;
                break;
            default:
                break;
        }
        EnableInterrupts();
        PORTA->ISFR = 0xFFFFFFFF;
        h_counter = 0;
        return;
    }
}



这里面的 index  是什么?  怎么调用的这个函数
回复 支持 反对

使用道具 举报

2

主题

20

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
250
威望
128
贡献
88
兑换币
81
注册时间
2016-9-24
在线时间
17 小时
毕业学校
ld
12#
发表于 2017-5-9 19:54:52 | 只看该作者
houge123 发表于 2017-1-16 16:47
初始化的问题,注意开中断的时间

开中断的时间  怎么弄?是下面这个函数吗?

void OV_ISR(uint32_t index)
{
    static uint8_t status = TRANSFER_IN_PROCESS;
    static uint32_t h_counter, v_counter;
   // uint32_t i;

    /* DDÖD¶Ï */
    if(index & (1 << BOARD_OV7620_HREF_PIN))
    {
        DMA_SetDestAddress(HW_DMA_CH2, (uint32_t)gpHREF[h_counter++]);
        //i = DMA_GetMajorLoopCount(HW_DMA_CH2);
        DMA_SetMajorLoopCounter(HW_DMA_CH2, (OV7620_W/8)+1);
        DMA_EnableRequest(HW_DMA_CH2);

        return;
    }
    /* 3¤ÖD¶Ï */
    if(index & (1 << BOARD_OV7620_VSYNC_PIN))
    {
        DisableInterrupts();

        switch(status)
        {
            case TRANSFER_IN_PROCESS:
                    UserApp(v_counter++);
                    //printf("i:%d %d\r\n", h_counter, i);
                    status = NEXT_FRAME;
                    h_counter = 0;

                break;
            case NEXT_FRAME: // waiting for next transfer
                status =  TRANSFER_IN_PROCESS;
                break;
            default:
                break;
        }
        EnableInterrupts();
        PORTA->ISFR = 0xFFFFFFFF;
        h_counter = 0;
        return;
    }
}


回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-26 02:47 , Processed in 0.036985 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表