智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1429|回复: 3
打印 上一主题 下一主题

用kl26+ov7620采集图像采成这样~求助

[复制链接]

2

主题

17

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2168
威望
1060
贡献
674
兑换币
688
注册时间
2015-4-20
在线时间
217 小时
毕业学校
东北大学秦皇岛分校
跳转到指定楼层
1#
发表于 2015-12-2 22:13:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
源程序:
#include "common.h"
#include "include.h"
#define hs 80
#define ls 60
#define size hs*ls/8

uint8 imagbuff[size];                        
uint16 VSY_Flog=0;
uint16 Line_Cont=0;
  
//函数声明
void vcan_sendimg(uint8 *imgaddr, uint32 imgsize);
void img_extract(uint8 *dst, uint8 *src, uint32 srclen);
void PORTA_IRQHandler();
void PORTC_IRQHandler();
void DMA0_IRQHandler();
void portinit();

void  main()
{
     
     DisableInterrupts;
     portinit();
     port_init(PTA2, ALT1 | IRQ_FALLING | PULLDOWN );
     enable_irq(PORTA_IRQn);
     port_init(PTC0, ALT1 | IRQ_RISING | PULLDOWN );
     port_init(PTD1, ALT1 | DMA_RISING | PULLDOWN );
     disable_irq(PORTC_PORTD_IRQn);
     uart_init(UART0,115200);
   
     set_vector_handler(PORTA_VECTORn,PORTA_IRQHandler);
     set_vector_handler(PORTC_PORTD_VECTORn,PORTC_IRQHandler);
     set_vector_handler(DMA0_VECTORn,DMA0_IRQHandler);
     EnableInterrupts;
   
     while(1)
    {
     vcan_sendimg(imagbuff,sizeof(imagbuff));
    }
}

void vcan_sendimg(uint8 *imgaddr, uint32 imgsize)
{
#define CMD_IMG     1
    uint8 cmdf[2] = {CMD_IMG, ~CMD_IMG};    //山外上位机 使用的命令
    uint8 cmdr[2] = {~CMD_IMG, CMD_IMG};    //山外上位机 使用的命令
    uart_putbuff(VCAN_PORT, cmdf, sizeof(cmdf));    //先发送命令
    uart_putbuff(VCAN_PORT,imgaddr, imgsize); //再发送图像
    uart_putbuff(VCAN_PORT, cmdr, sizeof(cmdr));    //先发送命令
}

void PORTA_IRQHandler()
{
   
    if(PORTA_ISFR & (1 << 2))
    {
      PORTA_ISFR  |= (1 << 2);
      led (LED0,LED_ON);
      dma_portx2buff_init(DMA_CH0,(void *)&PTE_B2_IN,imagbuff,PTD1, DMA_BYTE1,size);
      DMA_DIS(DMA_CH0);
      
      VSY_Flog=1;
      Line_Cont=0;
      enable_irq(PORTC_PORTD_IRQn);
     }
  
}

void PORTC_IRQHandler()
{
  
  if(PORTC_ISFR & (1 << 0))         
    {
        PORTC_ISFR  |= (1 <<0);     
        if(VSY_Flog==0)
        {
        return;
        }
        
        DMA_IRQ_EN(DMA_CH0);
        DMA_EN(DMA_CH0);
        Line_Cont++;
      
        if(Line_Cont==hs)
        {
         Line_Cont=0;
         DMA_DIS(DMA_CH0);
        }
       led(LED1,LED_ON);
    }
}
void DMA0_IRQHandler()
{
    DMA_IRQ_CLEAN(DMA_CH0);                             //清除通道传输中断标志位    (这样才能再次进入中断)
    DMA_IRQ_DIS(DMA_CH0);                               //禁止DMA   等待下一次行中断来临开启DMA

}
void portinit()
{
     gpio_init(PTE16,GPI,0);
     gpio_init(PTE17,GPI,0);
     gpio_init(PTE18,GPI,0);
     gpio_init(PTE19,GPI,0);
     gpio_init(PTE20,GPI,0);
     gpio_init(PTE21,GPI,0);
     gpio_init(PTE22,GPI,0);
     gpio_init(PTE23,GPI,0);
       led_init (LED0);
     led_init (LED1);
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

1

主题

20

帖子

0

精华

高级会员

Rank: 4

积分
672
威望
313
贡献
183
兑换币
197
注册时间
2015-11-23
在线时间
88 小时
2#
发表于 2015-12-2 22:54:15 | 只看该作者
你while里面都没获取图像
回复 支持 反对

使用道具 举报

2

主题

17

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2168
威望
1060
贡献
674
兑换币
688
注册时间
2015-4-20
在线时间
217 小时
毕业学校
东北大学秦皇岛分校
3#
 楼主| 发表于 2015-12-2 23:33:42 | 只看该作者
我开启了中断dma不就可以采集了吗?
回复 支持 反对

使用道具 举报

2

主题

17

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2168
威望
1060
贡献
674
兑换币
688
注册时间
2015-4-20
在线时间
217 小时
毕业学校
东北大学秦皇岛分校
4#
 楼主| 发表于 2015-12-3 09:06:01 | 只看该作者
lakers天眼 发表于 2015-12-2 22:54
你while里面都没获取图像

我开启了中断dma不就可以采集了吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-28 10:28 , Processed in 0.063706 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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