找回密码
 立即注册

QQ登录

只需一步,快速开始

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

OV2640摄像头和WIFI传输的STM32代码(含新建工程步骤)

[复制链接]
ID:330080 发表于 2018-5-15 01:05 | 显示全部楼层 |阅读模式
V1_4(103R WiFi V1_2_1)完成:
1. 鼠标移植(内核注释);
2. SD卡驱动(片上SPI驱动)
3. FatFs移植

4.wifi SPI测试,修改片上SPI驱动,16位数据传输
5.完成固件下载,初始化时修正了中断使能;
6.wifi模块上电后可以下载固件,固件下载成功后再次下载提示不成功。

7.添加外中断和定时器服务,并暂时移除固件数组

8.定时器暂未添加,转而为USB固件代码添加打印输出信息(信息输出添加在usb_core.c和usb_istr.c中)。

9.添加了Mass_Storage,将调试控制开关移到了usb_core.c中,增加了在MyBSP文件下的USB文件中,增加各种
USB设备类型的固件代码,并将hw_config.c/h作为通用的共享文件,独立放在hw_config文件夹下。

10.添加LCD驱动,添加OV模块,添加BMP编解码存储显示;在Nvic_Exit中新增加Rename_Pin.h,以方便端口拼写。


新建工程步骤:
444.jpg step1.jpg step2.jpg step3.jpg step4.jpg step5.jpg step6.jpg step7.jpg step8.jpg step9.jpg step10.jpg step11_CMSIS 头文件路劲有两个.jpg step12.jpg

该文件内包含的是用户的中断处理入口程序,中断入口函数是一个跨越BSP和用户应用程序的模块;同时包含了外设库的配置裁剪头文件。

部分主函数如下:
  1. /**
  2.   ******************************************************************************
  3.   * @file    GPIO/IOToggle/main.c
  4.   * @author  MCD Application Team
  5.   * @version V3.3.0
  6.   * @date    04/16/2010
  7.   * @brief   Main program body.
  8.   ******************************************************************************
  9.   * @copy
  10.   *
  11.   * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  12.   * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
  13.   * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
  14.   * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
  15.   * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
  16.   * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  17.   *
  18.   * <h2><center>© COPYRIGHT 2010 STMicroelectronics</center></h2>
  19.   */

  20. /* Includes ------------------------------------------------------------------*/
  21. #include "stm32f10x.h"
  22. #include <stdio.h>

  23. #include "usb_lib.h"
  24. #include "hw_config.h"
  25. #include "usb_pwr.h"

  26. #include "MyBspInc.h"
  27. #include "FATFS_008.h"

  28. #include "OnChip_Driver_Inc.h"
  29. #include "../BMP/BMP.h"



  30. #include <stm32f10x.h>

  31. #define sim900_rcc                    RCC_APB2Periph_GPIOB
  32. #define sim900_gpio                   GPIOB
  33. #define sim900_pin                    (GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_6)

  34. #define led_rcc                    RCC_APB2Periph_GPIOA
  35. #define led_gpio                   GPIOA
  36. #define led_pin                    (GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7)

  37. unsigned char str1[] = {"AT+RST\r\n"};

  38. unsigned char str2[] = {"AT+CWMODE=3\r\n"};

  39. unsigned char str3[] = {"AT+CWJAP=\"conan\",\"123456789\"\r\n"};

  40. unsigned char str4[] = {"AT+CIPSTART=\"TCP\",\"192.168.191.1\",8989\r\n"};

  41. unsigned char str5[] = {"AT+CIPSEND=16\r\n"};


  42. unsigned char str6[] = {"AT+CIPSEND=5\r\n"};

  43. unsigned char str7[] = {"AT+CIPMODE=1\r\n"};

  44. unsigned char str8[] = {"AT+CIPSEND\r\n"};

  45. void WIFI_Init()
  46. {
  47.          USART_SendString(str2);
  48.          Delay_nMS(1000);
  49.          Delay_nMS(1000);
  50.      Delay_nMS(1000);
  51.      Delay_nMS(1000);
  52.          USART_SendString(str1);
  53.          Delay_nMS(1000);
  54.          Delay_nMS(1000);
  55.      Delay_nMS(1000);
  56.      Delay_nMS(1000);
  57.          USART_SendString(str3);
  58.          Delay_nMS(1000);
  59.          Delay_nMS(1000);
  60.      Delay_nMS(1000);
  61.      Delay_nMS(1000);
  62.          Delay_nMS(1000);
  63.          Delay_nMS(1000);
  64.      Delay_nMS(1000);
  65.      Delay_nMS(1000);
  66.         Delay_nMS(1000);
  67.         Delay_nMS(1000);
  68.         Delay_nMS(1000);
  69.         Delay_nMS(1000);
  70.          USART_SendString(str4);
  71.          Delay_nMS(1000);
  72.          Delay_nMS(1000);

  73. }



  74. void init_gpio_func(void)
  75. {
  76.         GPIO_InitTypeDef GPIO_InitStructure;

  77.     RCC_APB2PeriphClockCmd(sim900_rcc,ENABLE);
  78.         RCC_APB2PeriphClockCmd(led_rcc,ENABLE);

  79.     GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;
  80.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  81.     GPIO_InitStructure.GPIO_Pin   = sim900_pin;
  82.     GPIO_Init(sim900_gpio, &GPIO_InitStructure);

  83.         GPIO_InitStructure.GPIO_Pin   = led_pin;
  84.         GPIO_Init(led_gpio, &GPIO_InitStructure);

  85. }

  86. void open_ov2640_3v3(void)
  87. {
  88.         GPIO_SetBits(sim900_gpio, GPIO_Pin_6);
  89.         GPIO_ResetBits(sim900_gpio, GPIO_Pin_6);
  90.         //
  91. }




  92. extern unsigned char VsyncCnt;                        //场同步标志        
  93. //////////////////////////////
  94. FATFS fs;                                 // Work area (file system object) for logical drives
  95. FRESULT res;                         // FatFs function common result code
  96. //////////////////////////////
  97. /** @addtogroup STM32F10x_StdPeriph_Examples
  98.   * @{
  99.   */

  100. /** @addtogroup GPIO_IOToggle
  101.   * @{
  102.   */

  103. /* Private typedef -----------------------------------------------------------*/
  104. /* Private define ------------------------------------------------------------*/
  105. /* Private macro -------------------------------------------------------------*/
  106. /* Private variables ---------------------------------------------------------*/
  107. GPIO_InitTypeDef GPIO_InitStructure;

  108. /* Private function prototypes -----------------------------------------------*/
  109. void Delay(__IO uint32_t nCount);



  110. extern u32 JpegDataCnt;
  111. extern u8 JpegBuffer[10240];
  112. extern u8 VsyncActive;
  113. OV2640_IDTypeDef OV2640_Camera_ID;

  114. extern void OV2640_AutoExposure(u8 level);

  115. int main(void)
  116. {
  117.         u16 i = 0;

  118.         ///////////////Delay初始化//////////////////               
  119.         Delay_Init(72);
  120.         ////////////////////////////////////////////
  121.         
  122.         ///////////////USART1初始化/////////////////
  123.         USART1_Init(115200);  
  124.         
  125.         //USART2_Init(9600);

  126.         //delay_ms(1000);
  127.         WIFI_Init();
  128.         Delay_nMS(1000);
  129.         USART_SendString(str7);
  130.         Delay_nMS(1000);
  131.         USART_SendString(str8);
  132.         
  133.         //init_gpio_func();
  134.         //open_ov2640_3v3();


  135.         OV2640_HW_Init();                                        //IIC初始化                                                                                //作用是在一段内存块中填充某个特定的值
  136.         memset(&OV2640_Camera_ID,0x0,sizeof(OV2640_IDTypeDef)); //是对较大的结构体或数组进行清零操作的一种最快方法

  137.         OV2640_ReadID(&OV2640_Camera_ID);        //读取OV2640ID,测试硬件,依次为:0x7F,0xA2,0x26,0x42

  138.         OV2640_JPEGConfig(JPEG_320x240);        //配置OV2640输出320*240像素的JPG图片
  139.         
  140.         //设置自动曝光和白平衡
  141.         OV2640_BrightnessConfig(0x20);
  142.         OV2640_AutoExposure(2);


  143.         OV2640_CaptureGpioInit();                                //数据采集引脚初始化
  144.         EXTI->IMR &= ~EXTI_Line8;                                //关闭场同步中断
  145.         EXTI->EMR &= ~EXTI_Line8;        
  146.         
  147.         EXTI->IMR &= ~EXTI_Line15;                                //关闭像素同步中断
  148.         EXTI->EMR &= ~EXTI_Line15;        
  149.         
  150.         Delay_nMS(10);                                                        //等待图像输出稳定
  151.         EXTI->IMR |= EXTI_Line8;                                //使能场同步中断,准备下次采集
  152.         EXTI->EMR |= EXTI_Line8;


  153.         
  154.         while(1)
  155.         {
  156.                 if(VsyncActive == 2)
  157.                 {

  158.                         for(i = 0; i < JpegDataCnt; i ++)
  159.                         {
  160.                                 USART_Transmit(JpegBuffer[i]);
  161.                         }


  162.                
  163.                         JpegDataCnt = 0;                                                //JPEG计数器清零
  164.                         
  165.                         EXTI->IMR |= EXTI_Line8;                                //使能场同步中断,准备下次采集
  166.                         EXTI->EMR |= EXTI_Line8;
  167.                                 
  168.                 }

  169.         }
  170. }

  171. /**
  172.   * @brief  Inserts a delay time.
  173.   * @param  nCount: specifies the delay time length.
  174.   * @retval None
  175.   */
  176. void Delay(__IO uint32_t nCount)
  177. {
  178.   for(; nCount != 0; nCount--);
  179. }

  180. #ifdef  USE_FULL_ASSERT
  181. /**
  182.   * @brief  Reports the name of the source file and the source line number
  183.   *         where the assert_param error has occurred.
  184.   * @param  file: pointer to the source file name
  185.   * @param  line: assert_param error line source number
  186.   * @retval None
  187.   */
  188. void assert_failed(uint8_t* file, uint32_t line)
  189. {
  190.   /* User can add his own implementation to report the file name and line number,
  191.      ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */

  192.   /* Infinite loop */
  193.   while (1)
  194.   {
  195.   }
  196. }
  197. #endif

  198. /**
  199.   * @}
  200.   */

  201. /**
  202.   * @}
  203.   */

  204. /******************* (C) COPYRIGHT 2010 STMicroelectronics *****END OF FILE****/
复制代码

全部资料51hei下载地址:
UART_JPEG +wifi.rar (1.69 MB, 下载次数: 161)

评分

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

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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