找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6943|回复: 3
收起左侧

stm32F103+山外鹰眼OV7725摄像头例程

[复制链接]
ID:451016 发表于 2018-12-20 19:55 | 显示全部楼层 |阅读模式
本代码从stm32F103的OV7670例程修改而成,所以内部文件名仍为ov7670,但实际为ov7725代码

单片机源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "key.h"
  4. #include "sys.h"
  5. #include "lcd.h"
  6. #include "usart.h"         
  7. #include "string.h"
  8. #include "ov7670.h"
  9. #include "tpad.h"
  10. #include "timer.h"
  11. #include "exti.h"
  12. #include "dma.h"
  13. #include "stm32f10x_dma.h"
  14. extern u8 ov_frame;        //在timer.c里面定义       
  15. extern u8 finfish;        //在it.c里面定义       
  16. u8 Row[40];
  17. //u16 Row_color[320];
  18. int main(void)
  19. {         
  20. //        u32 *p;
  21.         delay_init();                     //延时函数初始化          
  22.         NVIC_Configuration();          //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  23.         uart_init(9600);                 //串口初始化为9600
  24.         LED_Init();                             //LED端口初始化
  25.         LCD_Init();       
  26.         if(lcddev.id==0X6804||lcddev.id==0X5310||lcddev.id==0X5510)        //强制设置屏幕分辨率为320*240.以支持3.5/4.3寸大屏
  27.         {
  28.                 lcddev.width=240;
  29.                 lcddev.height=320;
  30.         }
  31.         KEY_Init();                
  32.         TPAD_Init(72);                        //触摸按键初始化                     
  33.         POINT_COLOR=RED;//设置字体为红色
  34.         LCD_ShowString(60,40,200,16,16,"WarShip STM32");       
  35.         LCD_ShowString(60,60,200,16,16,"OV7670 TEST");       
  36.         LCD_ShowString(60,80,200,16,16,"ATOM@ALIENTEK");
  37.         LCD_ShowString(60,100,200,16,16,"2012/9/14");  
  38.         LCD_ShowString(60,120,200,16,16,"KEY0:Light Mode");
  39.         LCD_ShowString(60,140,200,16,16,"KEY1:Saturation");
  40.         LCD_ShowString(60,160,200,16,16,"KEY2:Brightness");
  41.         LCD_ShowString(60,180,200,16,16,"KEY_UP:Contrast");
  42.         LCD_ShowString(60,200,200,16,16,"TPAD:Effects");         
  43.   LCD_ShowString(60,220,200,16,16,"OV7670 Init...");
  44.        
  45.         while(OV7670_Init())//初始化OV7670
  46.         {
  47.                 LCD_ShowString(60,220,200,16,16,"OV7670 Error!!");
  48.                 delay_ms(200);
  49.           LCD_Fill(60,220,239,246,WHITE);
  50.                 delay_ms(200);
  51.         }
  52.         LCD_ShowString(60,220,200,16,16,"OV7670 Init OK");
  53.         delay_ms(1500);                     
  54.         TIM6_Int_Init(10000,7199);                        //10Khz计数频率,1秒钟中断               
  55.        
  56. //        LCD_Put16REG(0,0,"Row[0]:",Row[0]);
  57. //        LCD_Put16REG(0,300,"Row[1]:",Row[1]);
  58. //        //LCD_Put16REG(0,0,"LCD_RAM:",LCD->LCD_RAM);
  59. //        LCD_Put16REG(0,20,"TIM1->SR:",TIM1->SR);
  60. //  LCD_Put16REG(0,280,"DMA->ISR:",DMA1->ISR);         
  61.        
  62.         TIM1_ETR_Init();       
  63.         MYDMA_Config(DMA1_Channel4,(u32)Row);  //初始化DMA1通道       
  64.         EXTI4_Init();
  65.         EXTI3_Init();
  66.         while(1)
  67.         {
  68. //                LCD_Put16REG(120,0,"Row[0]:",Row[0]);
  69. //                LCD_Put16REG(120,300,"Row[1]:",Row[1]);
  70. //                //LCD_Put16REG(120,0,"LCD_RAM:",LCD->LCD_RAM);
  71. //                LCD_Put16REG(120,20,"TIM1->SR:",TIM1->SR);
  72. //                LCD_Put16REG(0,240,"TIM1->SMCR:",TIM1->SMCR);
  73. //                LCD_Put16REG(120,240,"TIM1->DIER:",TIM1->DIER);
  74. //                LCD_Put16REG(120,260,"TIM1->CNT:",TIM1->CNT);
  75. //                LCD_Put16REG(120,280,"DMA->ISR:",DMA1->ISR);       
  76. //                LCD_Put16REG(0,260,"DMA->CNDTR:",DMA1_Channel4->CNDTR);       
  77.                 //测试触发DMA
  78. //                if(!KEY0){
  79. //                        LED0=!LED0;
  80. //                        TIM1->EGR |=1<<6;
  81. //                }
  82.                 //测试DMA触发结果
  83. //                if(!KEY1){
  84. //                        LED0=!LED0;
  85. //                        if(TIM1->SR) TIM1->SR=0x0000;
  86. //                        Row[0]=0;
  87. //                        MYDMA_Enable(DMA1_Channel4);
  88. //                }
  89.                 //测试位带操作
  90. //                if(!KEY2){
  91. //                        Row[0]=0XA5;
  92. //                        p=(u32 *)Row;
  93. //                        LCD_Put32REG(0,0,"Row0:",Row[0]);
  94. //                        LCD_Put32REG(120,0,"ARow:",(u32)p);
  95. //                        p=(u32 *)(0x22000000+(((u32)Row &0xFFFFF)<<5)+0*4);
  96. //                        LCD_Put32REG(0,240,"ARow:",(u32)p);
  97. //                        LCD_Put32REG(120,240,"Row00:",*p);
  98. //                        p++;
  99. //                        LCD_Put32REG(0,260,"ARow:",(u32)p);
  100. //                        LCD_Put32REG(120,260,"Row01:",*p);
  101. //                        p++;
  102. //                        LCD_Put32REG(0,280,"ARow:",(u32)p);
  103. //                        LCD_Put32REG(120,280,"Row02:",*p);
  104. //                        p++;
  105. //                        LCD_Put32REG(0,300,"ARow:",(u32)p);
  106. //                        LCD_Put32REG(120,300,"Row03:",*p);
  107. //                        p++;
  108. //                }
  109.         }
  110. }
复制代码

所有资料51hei提供下载:
Eagle7725摄像头.rar (369.28 KB, 下载次数: 248)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:140769 发表于 2019-8-4 23:59 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:376796 发表于 2019-8-24 22:37 | 显示全部楼层
确实是个好东西
回复

使用道具 举报

ID:633744 发表于 2019-11-29 18:41 | 显示全部楼层
我用keil5打开下到野火霸道的板子显示器什么都没有是为什么啊
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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