久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4674|回復(fù): 1
收起左側(cè)

ov7670+stm32 灰度圖采集程序

[復(fù)制鏈接]
ID:197342 發(fā)表于 2017-5-6 15:20 | 顯示全部樓層 |閱讀模式
分享一個ov7670 +stm32 灰度圖采集程序給大家
CMOS OV7670-FIFO模塊測試程序
  將帶FIFO的OV7670模塊插入板上的CMOS1接口中,攝像頭朝上,接上電源,TFT上顯示攝像頭拍攝圖像。
  由于CMOS的數(shù)據(jù)先讀入MCU后,MCU再將圖像數(shù)據(jù)送到TFT上顯示,故顯示速度相對較慢。
注意:
由于FIFO控制腳復(fù)用了JTAG調(diào)試引腳,故該程序不能用JTAG在線調(diào)試。

一旦程序下載到芯片中后,JTAG引腳將被當(dāng)作普通IO口使用,并且在沒有解鎖前,不能夠再次進行JTAG仿真測試。

解鎖辦法:
通過串口下載一個正常的程序到芯片中即可,比如可以選擇QF-TEST-LED中的文件進行下載。

J1  1、2端用跳帽連接
J2  1、2端用跳帽連接
J3  1、2端用跳帽連接

0.png

程序升級:

按key2按鍵,可實現(xiàn)解鎖JTAG口,此時可以通過仿真器下載程序,若要看到圖像,注意要拔掉仿真器。
   
源程序:

  1. #include <stm32f10x.h>
  2. #include <stdio.h>
  3. #include <usart.h>
  4. #include <Nvic_Exit.h>
  5. #include <delay.h>
  6. #include <tft.h>
  7. #include <ov7670.h>
  8. #include<I2C.h>
  9. #include "include.h"
  10. #include "Image.h"

  11. void RCC_Configuration(void);
  12. void GPIO_Configuration(void);
  13. void USART_Configuration(void);
  14. void IO_Init(void);               
  15. extern u8 KEY;


  16. u16 PixelCounter;   //用于像素計數(shù)
  17. u8 datareadyflag;

  18. //u8 data[40*160];
  19. u8 data[R][C];
  20. u8 * Data;


  21. #define   White   244
  22. #define   Black   0

  23. #define STRM  500
  24. #define STRL  380
  25. #define STRR  652
  26. //#define STRE  1200


  27. u8 InterruptLine=0;
  28. u8 TrueLine;
  29. u8 DataReadyFlag=0;


  30. u8 BlackLineData[R];
  31. u8 Left[R]={1};
  32. u8 Right[R]={C-1};
  33. //uchar Mid[R]={R/2};

  34. u8 LastFieldMid1=45;
  35. u8 LastFieldMid2=45;

  36. u8 ThresholdValue=130;
  37. s16 Err = 0;
  38. s16 Errlast   = 0;
  39. s16 Errd  = 0;
  40. s16 Errdlast  = 0;
  41. s16 Erri  = 0;
  42. s16 Roadtype  = 0;
  43. s16 Errhistory[8]={0};
  44. u16  Steerangle  = 0;

  45. const u16 SlampeLine[R]=     //采樣行,校準(zhǔn)縱向畸變
  46.   {
  47.      56,//
  48.      57,//
  49.      58,//
  50.      59,//
  51.      60,//
  52.      61,//121.5
  53.      62,//118
  54.      64,//114.5
  55.      66,//111
  56.      68,//107.5
  57.      70,//104
  58.      72,//100.5
  59.      74,//97
  60.      76,//93.5
  61.      79,//90
  62.      82,//86.5
  63.      85,//83
  64.      88,//79.5
  65.      91,//76
  66.      94,//72.5
  67.      97, //69
  68.      101,//65.5
  69.      105,//62
  70.      110,//58.5
  71.      115,//55
  72.      120,//51.5
  73.      126,//48
  74.      134,//44.5
  75.      142,//41
  76.      150,//37.5
  77.      158,//34
  78.      166,//30.5
  79.      174,//27
  80.      182,//23.5cm
  81.      190,//20cm
  82.      204,//16.5cm
  83.      220,//13cm
  84.      238 //9.5cm
  85.   };






  86. main()
  87. {
  88.         RCC_Configuration();;//系統(tǒng)時鐘設(shè)置
  89.         delay_init(72);                //延時初始化
  90.         USART1_Init(115200);//串口1初始化  
  91. //        printf("QF: You are welcom!\r\n");

  92.         Cmos_CS =1 ;  
  93.         LCD_Init();
  94.         IO_Init();
  95.         GPIO_Configuration();

  96.         USART_Configuration();
  97.         LCD_Clear(BLUE);       //清屏
  98.         POINT_COLOR=YELLOW;
  99.         BACK_COLOR=BLUE;
  100.   //LCD_ShowString(20,50,"QF Welcom");
  101. ///        LCD_ShowString(20,100,"STM32 Camera");
  102. //        LCD_ShowString(20,150,"MYOV7670 Initing......");
  103.    
  104.         CMOS1_PWDN=0;
  105.         CMOS1_RST=0;
  106.         delay_ms(20);
  107.         CMOS1_RST=1;
  108.         InitI2C0();         
  109.         while(1!=Cmos7670_init());   //CMOS初始化        
  110.         Exit_Init(GPIOC, GPIO_Pin_4, GPIO_Mode_IPU, EXTI_Trigger_Falling, 2, 5);        //VSYNC                 
  111.         Exit_Init(GPIOD, GPIO_Pin_2, GPIO_Mode_IPU, EXTI_Trigger_Falling, 2, 0);
  112.           while(1)
  113.         {
  114.          
  115.             
  116.                         if (datareadyflag==1)
  117.                         {
  118.                          EXTI->IMR &=~(1<<4);  //屏蔽中斷           
  119.              EXTI->PR |=(1<<4);  //清楚懸掛標(biāo)記位;
  120.                     datareadyflag=0;
  121. //-----------------------------------------------------------------------
  122.                         //   DataAnalyse(1);
  123.                        send_pic();

  124. //-----------------------------------------------------------------------
  125.                          EXTI->IMR|=(1<<4);          //允許外部中斷,以便接收下幀圖像數(shù)據(jù)

  126.                         }
  127.         }
  128. }

  129. /*******************************************************************************
  130. * Function Name  : RCC_Configuration
  131. * Description    : RCC select(external 8MHz)
  132. * Input          : NO
  133. * Output         : NO
  134. * Return         : NO
  135. *******************************************************************************/
  136. void RCC_Configuration(void)
  137. {

  138.   ErrorStatus HSEStartUpStatus;
  139.   RCC_DeInit();
  140.   RCC_HSEConfig(RCC_HSE_ON);   
  141.   HSEStartUpStatus = RCC_WaitForHSEStartUp();

  142.   if(HSEStartUpStatus == SUCCESS)         
  143.   {
  144.   
  145.     RCC_HCLKConfig(RCC_SYSCLK_Div1);  
  146.     RCC_PCLK2Config(RCC_HCLK_Div1);                  
  147.         RCC_PCLK1Config(RCC_HCLK_Div2);                  
  148.     RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);        
  149.     RCC_PLLCmd(ENABLE);
  150.     while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)         
  151.        {
  152.        }
  153.     RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
  154.     while(RCC_GetSYSCLKSource() != 0x08)         
  155.        {
  156.        }
  157.      }

  158.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO|RCC_APB2Periph_USART1, ENABLE);
  159. }

  160. void IO_Init(void)
  161. {

  162.           RCC->APB2ENR|=1<<0;//開啟輔助時鐘
  163.         RCC->APB2ENR|=1<<2;//先使能外設(shè)PORTA時鐘
  164.         RCC->APB2ENR|=1<<3;//先使能外設(shè)PORTB時鐘
  165.          RCC->APB2ENR|=1<<4;//先使能外設(shè)PORTC時鐘

  166.            GPIOA->CRH=0X33333333; //PORTA上拉輸出
  167.         GPIOA->CRL=0X33333333;
  168.         GPIOA->ODR=0XFFFF;         

  169.         GPIOB->CRL=0X88888888; //PB0-7  上拉輸入
  170.         GPIOB->CRH=0X33333333; //PB8-15  上拉輸出
  171.         GPIOA->ODR=0XFFFF;

  172.            GPIOC->CRH=0X33333333; //PORTC上拉輸出
  173.         GPIOC->CRL=0X33333333;         
  174.         GPIOC->ODR=0XFFFF;        
  175.                     
  176.            JTAG_Set(JTAG_SWD_DISABLE);         //JTAG功能禁止,復(fù)用JTAG端口
  177. }

  178. //保持原有配置
  179. void GPIO_Configuration(void)
  180. {
  181.     /* 定義 GPIO 初始化結(jié)構(gòu)體 GPIO_InitStructure */
  182.     GPIO_InitTypeDef GPIO_InitStructure;
  183.    
  184.     /* 設(shè)置USART1的Tx腳(PA.9)為第二功能推挽輸出模式 */


  185. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

下載(此代碼年代久遠,采用的老版本的庫和老版本看Keil編寫的):
Keil代碼.7z (272.38 KB, 下載次數(shù): 60)
回復(fù)

使用道具 舉報

ID:194871 發(fā)表于 2017-8-5 12:07 | 顯示全部樓層
謝謝樓主
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美一级在线观看 | 精品一区二区视频 | 亚洲精品大片 | 中文字幕免费观看 | 美女久久久久久久久 | 久久精片 | 国产精品久久久久久一区二区三区 | 国产在线播 | 日韩精品一区二区三区视频播放 | 日本超碰 | 欧美日韩综合视频 | 成人国产a | 日韩精品在线视频 | 久色视频在线观看 | 亚洲国产成人精品女人 | 特级黄一级播放 | 成人欧美一区二区三区色青冈 | 久久久久久久一区二区三区 | 夜夜骑首页 | 久久久久99 | av黄色在线播放 | av在线二区 | 色狠狠一区| 欧美在线国产精品 | 伊人伊成久久人综合网站 | 成人性生交大片免费看r链接 | 日韩精品一区二区三区视频播放 | 亚洲aⅴ一区二区 | 国产美女在线观看 | 黄色a级一级片 | 一区二区日韩 | 在线免费观看黄a | 午夜精品一区二区三区三上悠亚 | 欧美a区 | 国产精品亚洲二区 | 美女二区 | 久久久久无码国产精品一区 | 久久国产精品久久久久久久久久 | 亚洲 欧美 日韩在线 | 亚洲毛片在线观看 | 亚洲一区二区三区四区五区午夜 |