Port of TI's CC3100 Websock camera demo. Using FreeRTOS, mbedTLS, also parts of Arducam for cams ov5642 and 0v2640. Can also use MT9D111. Work in progress. Be warned some parts maybe a bit flacky. This is for Seeed Arch max only, for an M3, see the demo for CM3 using the 0v5642 aducam mini.

Dependencies:   mbed

Committer:
dflet
Date:
Fri Aug 28 21:04:44 2015 +0000
Revision:
15:5433f9d94cd7
Parent:
14:90603ea1e85b
Child:
16:7e5aab2fabba
Cam ov2640 working correctly, didnt know it also gave a jpeg header. App still not stable. Still a lot of work needed.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dflet 0:50cedd586816 1 //*****************************************************************************
dflet 0:50cedd586816 2 // main.c
dflet 0:50cedd586816 3 //
dflet 0:50cedd586816 4 // Reference code to demonstrate getting the current time using an NTP server.
dflet 0:50cedd586816 5 //
dflet 0:50cedd586816 6 // Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/
dflet 0:50cedd586816 7 //
dflet 0:50cedd586816 8 //
dflet 0:50cedd586816 9 // Redistribution and use in source and binary forms, with or without
dflet 0:50cedd586816 10 // modification, are permitted provided that the following conditions
dflet 0:50cedd586816 11 // are met:
dflet 0:50cedd586816 12 //
dflet 0:50cedd586816 13 // Redistributions of source code must retain the above copyright
dflet 0:50cedd586816 14 // notice, this list of conditions and the following disclaimer.
dflet 0:50cedd586816 15 //
dflet 0:50cedd586816 16 // Redistributions in binary form must reproduce the above copyright
dflet 0:50cedd586816 17 // notice, this list of conditions and the following disclaimer in the
dflet 0:50cedd586816 18 // documentation and/or other materials provided with the
dflet 0:50cedd586816 19 // distribution.
dflet 0:50cedd586816 20 //
dflet 0:50cedd586816 21 // Neither the name of Texas Instruments Incorporated nor the names of
dflet 0:50cedd586816 22 // its contributors may be used to endorse or promote products derived
dflet 0:50cedd586816 23 // from this software without specific prior written permission.
dflet 0:50cedd586816 24 //
dflet 0:50cedd586816 25 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
dflet 0:50cedd586816 26 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
dflet 0:50cedd586816 27 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
dflet 0:50cedd586816 28 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
dflet 0:50cedd586816 29 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
dflet 0:50cedd586816 30 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
dflet 0:50cedd586816 31 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
dflet 0:50cedd586816 32 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
dflet 0:50cedd586816 33 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
dflet 0:50cedd586816 34 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
dflet 0:50cedd586816 35 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
dflet 0:50cedd586816 36 //
dflet 0:50cedd586816 37 //*****************************************************************************
dflet 0:50cedd586816 38
dflet 0:50cedd586816 39 //****************************************************************************
dflet 0:50cedd586816 40 //
dflet 0:50cedd586816 41 //! \addtogroup main
dflet 0:50cedd586816 42 //! @{
dflet 0:50cedd586816 43 //
dflet 0:50cedd586816 44 //****************************************************************************
dflet 0:50cedd586816 45
dflet 0:50cedd586816 46 #include "mbed.h"
dflet 0:50cedd586816 47
dflet 0:50cedd586816 48 // SimpleLink include
dflet 0:50cedd586816 49 #include "cc3100_simplelink.h"
dflet 0:50cedd586816 50 #include "cc3100.h"
dflet 0:50cedd586816 51
dflet 0:50cedd586816 52 #include "httpserverapp.h"
dflet 0:50cedd586816 53
dflet 4:c27adffcfec2 54 //#include "stm32f4xx_hal.h"
dflet 7:a069c1750fbc 55 #include "stm32f4xx_hal_rcc.h"
dflet 0:50cedd586816 56
dflet 0:50cedd586816 57 /* Free-RTOS includes */
dflet 15:5433f9d94cd7 58 #include "FreeRTOS.h"
dflet 15:5433f9d94cd7 59 #include "task.h"
dflet 15:5433f9d94cd7 60 #include "semphr.h"
dflet 15:5433f9d94cd7 61 #include "portmacro.h"
dflet 15:5433f9d94cd7 62
dflet 0:50cedd586816 63 #include "osi.h"
dflet 0:50cedd586816 64
dflet 0:50cedd586816 65 #include "cli_uart.h"
dflet 0:50cedd586816 66 #include "app_config.h"
dflet 0:50cedd586816 67 #include "myBoardInit.h"
dflet 12:7d75ba5deed1 68 #include "camera_app.h"
dflet 0:50cedd586816 69
dflet 0:50cedd586816 70 using namespace mbed_cc3100;
dflet 0:50cedd586816 71
dflet 14:90603ea1e85b 72 extern DCMI_HandleTypeDef hdcmi;
dflet 14:90603ea1e85b 73 extern DMA_HandleTypeDef hdma_dcmi;
dflet 4:c27adffcfec2 74
dflet 1:1a80c1529aa3 75 /* Warning if pin changes are made below then the same changes have to be made in the following files.
dflet 0:50cedd586816 76 * httpserverapp.cpp
dflet 0:50cedd586816 77 * HttpCore.cpp
dflet 0:50cedd586816 78 * HttpSocket.cpp
dflet 0:50cedd586816 79 * HttpStatic.cpp
dflet 0:50cedd586816 80 * fPtr_func.cpp
dflet 0:50cedd586816 81 */
dflet 0:50cedd586816 82
dflet 0:50cedd586816 83 /* Off board leds */
dflet 0:50cedd586816 84 DigitalOut led1(PB_15);
dflet 0:50cedd586816 85 DigitalOut led2(PB_14);
dflet 14:90603ea1e85b 86 //Serial pc(USBTX, USBRX);
dflet 0:50cedd586816 87 cc3100 _cc3100(NC, NC, PD_12, PD_13, PD_11, SPI(PB_5, PB_4, PB_3));//Seeed_Arch_Max irq, nHib, cs, mosi, miso, sck
dflet 0:50cedd586816 88
dflet 14:90603ea1e85b 89 static void Start_MCO1(void);
dflet 0:50cedd586816 90 void initLEDs(void);
dflet 0:50cedd586816 91 void toggleLed(int ind);
dflet 0:50cedd586816 92 static void DisplayBanner(char * AppName);
dflet 0:50cedd586816 93
dflet 0:50cedd586816 94 #define PRINT_BUF_LEN 128
dflet 0:50cedd586816 95 int8_t print_buf[PRINT_BUF_LEN];
dflet 0:50cedd586816 96
dflet 0:50cedd586816 97 //*****************************************************************************
dflet 0:50cedd586816 98 // LOCAL DEFINES
dflet 0:50cedd586816 99 //*****************************************************************************
dflet 0:50cedd586816 100 #define APP_NAME "WebSocket"
dflet 0:50cedd586816 101
dflet 0:50cedd586816 102 void initLEDs(void){
dflet 0:50cedd586816 103
dflet 0:50cedd586816 104 #if (THIS_BOARD == Seeed_Arch_Max)
dflet 0:50cedd586816 105 led1 = 0;
dflet 0:50cedd586816 106 led2 = 0;
dflet 0:50cedd586816 107 #endif
dflet 0:50cedd586816 108
dflet 0:50cedd586816 109 }
dflet 0:50cedd586816 110
dflet 14:90603ea1e85b 111 static void Start_MCO1()
dflet 14:90603ea1e85b 112 {
dflet 14:90603ea1e85b 113
dflet 14:90603ea1e85b 114 GPIO_InitTypeDef GPIO_InitStruct;
dflet 14:90603ea1e85b 115 __GPIOA_CLK_ENABLE();
dflet 14:90603ea1e85b 116
dflet 14:90603ea1e85b 117 /*Configure GPIO pin : GPIO_AF0_MCO PA8 */
dflet 14:90603ea1e85b 118 GPIO_InitStruct.Pin = GPIO_PIN_8;
dflet 14:90603ea1e85b 119 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
dflet 14:90603ea1e85b 120 GPIO_InitStruct.Pull = GPIO_PULLUP;
dflet 14:90603ea1e85b 121 GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
dflet 14:90603ea1e85b 122 GPIO_InitStruct.Alternate = GPIO_AF0_MCO;
dflet 14:90603ea1e85b 123 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
dflet 14:90603ea1e85b 124
dflet 15:5433f9d94cd7 125 #if defined OV5642_CAM
dflet 14:90603ea1e85b 126 /* MCO1 output 16MHz */
dflet 14:90603ea1e85b 127 HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_HSE, RCC_MCODIV_1);
dflet 14:90603ea1e85b 128 #else
dflet 14:90603ea1e85b 129 /* MCO1 output 8MHz */
dflet 14:90603ea1e85b 130 HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_HSE, RCC_MCODIV_2);
dflet 14:90603ea1e85b 131 #endif
dflet 14:90603ea1e85b 132 wait_ms(500);
dflet 14:90603ea1e85b 133 }
dflet 14:90603ea1e85b 134
dflet 0:50cedd586816 135 void toggleLed(int ind){
dflet 0:50cedd586816 136
dflet 0:50cedd586816 137 if(ind == 1){
dflet 0:50cedd586816 138 led1 = !led1;
dflet 0:50cedd586816 139 }
dflet 0:50cedd586816 140 if(ind == 2){
dflet 0:50cedd586816 141 led2 = !led2;
dflet 0:50cedd586816 142 }
dflet 0:50cedd586816 143
dflet 0:50cedd586816 144 }
dflet 0:50cedd586816 145
dflet 0:50cedd586816 146 //*****************************************************************************
dflet 0:50cedd586816 147 //
dflet 0:50cedd586816 148 //! Application startup display on UART
dflet 0:50cedd586816 149 //!
dflet 0:50cedd586816 150 //! \param none
dflet 0:50cedd586816 151 //!
dflet 0:50cedd586816 152 //! \return none
dflet 0:50cedd586816 153 //!
dflet 0:50cedd586816 154 //*****************************************************************************
dflet 0:50cedd586816 155
dflet 0:50cedd586816 156 //#ifndef NOTERM
dflet 0:50cedd586816 157 static void
dflet 0:50cedd586816 158 DisplayBanner(char * AppName)
dflet 0:50cedd586816 159 {
dflet 0:50cedd586816 160
dflet 0:50cedd586816 161 Report("\n\n\n\r");
dflet 0:50cedd586816 162 Report(" *************************************************\n\r");
dflet 0:50cedd586816 163 Report(" CC3100 %s Application \n\r", AppName);
dflet 0:50cedd586816 164 Report(" *************************************************\n\r");
dflet 0:50cedd586816 165 Report("\n\n\n\r");
dflet 0:50cedd586816 166 }
dflet 0:50cedd586816 167 //#endif
dflet 0:50cedd586816 168
dflet 0:50cedd586816 169 //****************************************************************************
dflet 0:50cedd586816 170 // MAIN FUNCTION
dflet 0:50cedd586816 171 //****************************************************************************
dflet 0:50cedd586816 172 int main(void) {
dflet 0:50cedd586816 173
dflet 12:7d75ba5deed1 174 SCB->SHCSR |= 0x00070000;
dflet 0:50cedd586816 175 int rv = 0;
dflet 3:7643714ec664 176
dflet 0:50cedd586816 177 //
dflet 0:50cedd586816 178 // Configuring UART
dflet 0:50cedd586816 179 //
dflet 0:50cedd586816 180 CLI_Configure();
dflet 14:90603ea1e85b 181
dflet 14:90603ea1e85b 182 #if defined OV5642_CAM
dflet 14:90603ea1e85b 183 Uart_Write((uint8_t*)"\n\rOV5642 Camera \n\r");
dflet 14:90603ea1e85b 184 #elif defined OV2640_CAM
dflet 14:90603ea1e85b 185 Uart_Write((uint8_t*)"\n\rOV2640 Camera \n\r");
dflet 14:90603ea1e85b 186 #elif defined MT9D111_CAM
dflet 14:90603ea1e85b 187 Uart_Write((uint8_t*)"\n\rMT9D111 Camera \n\r");
dflet 14:90603ea1e85b 188 #endif
dflet 14:90603ea1e85b 189
dflet 14:90603ea1e85b 190 /* Start Camera Master Clock */
dflet 14:90603ea1e85b 191 Start_MCO1();
dflet 14:90603ea1e85b 192
dflet 14:90603ea1e85b 193
dflet 14:90603ea1e85b 194
dflet 7:a069c1750fbc 195 initLEDs();
dflet 0:50cedd586816 196
dflet 4:c27adffcfec2 197 // toggleLed(1);
dflet 0:50cedd586816 198 //#ifndef NOTERM
dflet 0:50cedd586816 199
dflet 0:50cedd586816 200 memset(print_buf, 0x00, PRINT_BUF_LEN);
dflet 0:50cedd586816 201 sprintf((char*) print_buf, " \r\nSystemCoreClock = %dMHz\r\n ", SystemCoreClock /1000000);
dflet 0:50cedd586816 202 rv = Uart_Write((uint8_t *) print_buf);
dflet 0:50cedd586816 203 if(rv < 0){
dflet 0:50cedd586816 204 while(1){
dflet 0:50cedd586816 205 toggleLed(1);
dflet 0:50cedd586816 206 wait(0.1);
dflet 0:50cedd586816 207 }
dflet 0:50cedd586816 208 }
dflet 0:50cedd586816 209
dflet 0:50cedd586816 210 //
dflet 0:50cedd586816 211 // Display Application Banner
dflet 0:50cedd586816 212 //
dflet 0:50cedd586816 213 DisplayBanner(APP_NAME);
dflet 0:50cedd586816 214
dflet 15:5433f9d94cd7 215 createMutex();
dflet 15:5433f9d94cd7 216
dflet 0:50cedd586816 217 //#endif
dflet 0:50cedd586816 218
dflet 0:50cedd586816 219 //
dflet 0:50cedd586816 220 // Start the SimpleLink Host
dflet 0:50cedd586816 221 //
dflet 0:50cedd586816 222 VStartSimpleLinkSpawnTask(SPAWN_TASK_PRIORITY);
dflet 0:50cedd586816 223 //
dflet 0:50cedd586816 224 // Start the HttpServer Task
dflet 0:50cedd586816 225 //
dflet 0:50cedd586816 226 //
dflet 0:50cedd586816 227
dflet 0:50cedd586816 228 osi_TaskCreate(HttpServerAppTask,
dflet 0:50cedd586816 229 "WebSocketApp",
dflet 0:50cedd586816 230 OSI_STACK_SIZE,
dflet 0:50cedd586816 231 NULL,
dflet 0:50cedd586816 232 HTTP_SERVER_APP_TASK_PRIORITY,
dflet 0:50cedd586816 233 NULL );
dflet 0:50cedd586816 234
dflet 14:90603ea1e85b 235 Uart_Write((uint8_t*)"HttpServerApp Initializing \n\r");
dflet 0:50cedd586816 236
dflet 0:50cedd586816 237 //
dflet 0:50cedd586816 238 // Start the task scheduler
dflet 0:50cedd586816 239 //
dflet 0:50cedd586816 240 osi_start();
dflet 0:50cedd586816 241
dflet 0:50cedd586816 242 return 0;
dflet 0:50cedd586816 243 }
dflet 0:50cedd586816 244
dflet 4:c27adffcfec2 245 /**
dflet 4:c27adffcfec2 246 * @brief This function handles Hard Fault exception.
dflet 4:c27adffcfec2 247 * @param None
dflet 4:c27adffcfec2 248 * @retval None
dflet 4:c27adffcfec2 249 */
dflet 4:c27adffcfec2 250 extern "C" void HardFault_Handler(void)
dflet 4:c27adffcfec2 251 {
dflet 4:c27adffcfec2 252 /* Go to infinite loop when Hard Fault exception occurs */
dflet 12:7d75ba5deed1 253 Uart_Write((uint8_t*)"\n\rHardFault_Handler \n\r");
dflet 5:75fcfdb7cae7 254 printf("Hard Fault Register SCB->HSFR 0x%X \r\n",SCB->HFSR);
dflet 5:75fcfdb7cae7 255 printf("Fault bits set SCB->CFSR 0x%X \r\n",SCB->CFSR);
dflet 12:7d75ba5deed1 256 printf("Call to Memory Address SCB->BFAR 0x%X ERROR!\r\n",SCB->BFAR);
dflet 5:75fcfdb7cae7 257 printf("Call to Memory Address SCB->MMFAR 0x%X ERROR!\r\n",SCB->MMFAR);
dflet 4:c27adffcfec2 258 Uart_Write((uint8_t*)"HardFault_Handler \n\r");
dflet 4:c27adffcfec2 259 while (1)
dflet 4:c27adffcfec2 260 {
dflet 4:c27adffcfec2 261 }
dflet 4:c27adffcfec2 262 }
dflet 4:c27adffcfec2 263
dflet 4:c27adffcfec2 264 /**
dflet 4:c27adffcfec2 265 * @brief This function handles Memory Manage exception.
dflet 4:c27adffcfec2 266 * @param None
dflet 4:c27adffcfec2 267 * @retval None
dflet 4:c27adffcfec2 268 */
dflet 4:c27adffcfec2 269 extern "C" void MemManage_Handler(void)
dflet 12:7d75ba5deed1 270 {
dflet 12:7d75ba5deed1 271 Uart_Write((uint8_t*)"\n\rMemManage_Handler \n\r");
dflet 12:7d75ba5deed1 272 printf("Fault bits set SCB->CFSR 0x%X \r\n",SCB->CFSR);
dflet 12:7d75ba5deed1 273 printf("Call to Memory Address SCB->BFAR 0x%X ERROR!\r\n",SCB->BFAR);
dflet 12:7d75ba5deed1 274 printf("Call to Memory Address SCB->MMFAR 0x%X ERROR!\r\n",SCB->MMFAR);
dflet 4:c27adffcfec2 275 Uart_Write((uint8_t*)"MemManage_Handler \n\r");
dflet 4:c27adffcfec2 276 /* Go to infinite loop when Memory Manage exception occurs */
dflet 4:c27adffcfec2 277 while (1)
dflet 4:c27adffcfec2 278 {
dflet 4:c27adffcfec2 279 }
dflet 4:c27adffcfec2 280 }
dflet 4:c27adffcfec2 281
dflet 4:c27adffcfec2 282 /**
dflet 4:c27adffcfec2 283 * @brief This function handles Bus Fault exception.
dflet 4:c27adffcfec2 284 * @param None
dflet 4:c27adffcfec2 285 * @retval None
dflet 4:c27adffcfec2 286 */
dflet 4:c27adffcfec2 287 extern "C" void BusFault_Handler(void)
dflet 4:c27adffcfec2 288 {
dflet 12:7d75ba5deed1 289 Uart_Write((uint8_t*)"\n\rBusFault_Handler \n\r");
dflet 12:7d75ba5deed1 290 printf("Fault bits set SCB->CFSR 0x%X \r\n",SCB->CFSR);
dflet 12:7d75ba5deed1 291 printf("Call to Memory Address SCB->BFAR 0x%X ERROR!\r\n",SCB->BFAR);
dflet 12:7d75ba5deed1 292 printf("Call to Memory Address SCB->MMFAR 0x%X ERROR!\r\n",SCB->MMFAR);
dflet 4:c27adffcfec2 293 Uart_Write((uint8_t*)"BusFault_Handler \n\r");
dflet 4:c27adffcfec2 294 /* Go to infinite loop when Bus Fault exception occurs */
dflet 4:c27adffcfec2 295 while (1)
dflet 4:c27adffcfec2 296 {
dflet 4:c27adffcfec2 297 }
dflet 4:c27adffcfec2 298 }
dflet 4:c27adffcfec2 299
dflet 4:c27adffcfec2 300 /**
dflet 4:c27adffcfec2 301 * @brief This function handles Usage Fault exception.
dflet 4:c27adffcfec2 302 * @param None
dflet 4:c27adffcfec2 303 * @retval None
dflet 4:c27adffcfec2 304 */
dflet 4:c27adffcfec2 305 extern "C" void UsageFault_Handler(void)
dflet 4:c27adffcfec2 306 {
dflet 4:c27adffcfec2 307 Uart_Write((uint8_t*)"UsageFault_Handler \n\r");
dflet 4:c27adffcfec2 308 /* Go to infinite loop when Usage Fault exception occurs */
dflet 4:c27adffcfec2 309 while (1)
dflet 4:c27adffcfec2 310 {
dflet 4:c27adffcfec2 311 }
dflet 4:c27adffcfec2 312 }
dflet 4:c27adffcfec2 313
dflet 4:c27adffcfec2 314 /**
dflet 4:c27adffcfec2 315 * @brief This function handles SVCall exception.
dflet 4:c27adffcfec2 316 * @param None
dflet 4:c27adffcfec2 317 * @retval None
dflet 4:c27adffcfec2 318 */
dflet 4:c27adffcfec2 319 /*
dflet 4:c27adffcfec2 320 extern "C" void SVC_Handler(void)
dflet 4:c27adffcfec2 321 {
dflet 4:c27adffcfec2 322 Uart_Write((uint8_t*)"SVC_Handler \n\r");
dflet 4:c27adffcfec2 323 }
dflet 4:c27adffcfec2 324 */
dflet 4:c27adffcfec2 325 /**
dflet 4:c27adffcfec2 326 * @brief This function handles Debug Monitor exception.
dflet 4:c27adffcfec2 327 * @param None
dflet 4:c27adffcfec2 328 * @retval None
dflet 4:c27adffcfec2 329 */
dflet 4:c27adffcfec2 330 extern "C" void DebugMon_Handler(void)
dflet 4:c27adffcfec2 331 {
dflet 4:c27adffcfec2 332 Uart_Write((uint8_t*)"DebugMon_Handler \n\r");
dflet 4:c27adffcfec2 333 }
dflet 4:c27adffcfec2 334
dflet 4:c27adffcfec2 335 /**
dflet 4:c27adffcfec2 336 * @brief This function handles PendSVC exception.
dflet 4:c27adffcfec2 337 * @param None
dflet 4:c27adffcfec2 338 * @retval None
dflet 4:c27adffcfec2 339 */
dflet 4:c27adffcfec2 340 /*
dflet 4:c27adffcfec2 341 extern "C" void PendSV_Handler(void)
dflet 4:c27adffcfec2 342 {
dflet 4:c27adffcfec2 343 Uart_Write((uint8_t*)"PendSV_Handler \n\r");
dflet 4:c27adffcfec2 344 }
dflet 4:c27adffcfec2 345 */
dflet 4:c27adffcfec2 346 /**
dflet 4:c27adffcfec2 347 * @brief This function handles SysTick Handler.
dflet 4:c27adffcfec2 348 * @param None
dflet 4:c27adffcfec2 349 * @retval None
dflet 4:c27adffcfec2 350 */
dflet 4:c27adffcfec2 351 /*
dflet 4:c27adffcfec2 352 extern "C" void SysTick_Handler(void)
dflet 4:c27adffcfec2 353 {
dflet 4:c27adffcfec2 354 Uart_Write((uint8_t*)"SysTick_Handler \n\r");
dflet 4:c27adffcfec2 355 HAL_IncTick();
dflet 4:c27adffcfec2 356 }
dflet 4:c27adffcfec2 357 */
dflet 4:c27adffcfec2 358 /**
dflet 4:c27adffcfec2 359 * @brief DMA interrupt handler.
dflet 4:c27adffcfec2 360 * @param None
dflet 4:c27adffcfec2 361 * @retval None
dflet 4:c27adffcfec2 362 */
dflet 14:90603ea1e85b 363 /*
dflet 4:c27adffcfec2 364 void DMA2_Stream1_IRQHandler(void)
dflet 4:c27adffcfec2 365 {
dflet 4:c27adffcfec2 366 Uart_Write((uint8_t*)"DMA2_Stream1_IRQHandler \n\r");
dflet 4:c27adffcfec2 367 HAL_DMA_IRQHandler(&hdma_dcmi);
dflet 4:c27adffcfec2 368 }
dflet 11:404bd8bb7fa6 369 */
dflet 4:c27adffcfec2 370 /**
dflet 4:c27adffcfec2 371 * @brief DCMI interrupt handler.
dflet 4:c27adffcfec2 372 * @param None
dflet 4:c27adffcfec2 373 * @retval None
dflet 14:90603ea1e85b 374 */
dflet 14:90603ea1e85b 375 /*
dflet 4:c27adffcfec2 376 void DCMI_IRQHandler(void)
dflet 4:c27adffcfec2 377 {
dflet 4:c27adffcfec2 378 Uart_Write((uint8_t*)"DCMI_IRQHandler \n\r");
dflet 4:c27adffcfec2 379 HAL_DCMI_IRQHandler(&hdcmi);
dflet 4:c27adffcfec2 380 }
dflet 11:404bd8bb7fa6 381 */
dflet 0:50cedd586816 382 //*****************************************************************************
dflet 0:50cedd586816 383 //
dflet 0:50cedd586816 384 // Close the Doxygen group.
dflet 0:50cedd586816 385 //! @}
dflet 0:50cedd586816 386 //
dflet 0:50cedd586816 387 //*****************************************************************************
dflet 0:50cedd586816 388
dflet 14:90603ea1e85b 389
dflet 14:90603ea1e85b 390
dflet 14:90603ea1e85b 391