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:
Mon Jul 13 08:20:40 2015 +0000
Revision:
13:bf45f592c2b6
Parent:
12:7d75ba5deed1
Child:
14:90603ea1e85b
WIP commit 14 i2c not working correctly.

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 0:50cedd586816 58 #include "osi.h"
dflet 0:50cedd586816 59
dflet 0:50cedd586816 60 #include "cli_uart.h"
dflet 0:50cedd586816 61 #include "app_config.h"
dflet 0:50cedd586816 62 #include "myBoardInit.h"
dflet 12:7d75ba5deed1 63 #include "camera_app.h"
dflet 0:50cedd586816 64
dflet 0:50cedd586816 65 using namespace mbed_cc3100;
dflet 0:50cedd586816 66
dflet 0:50cedd586816 67 static void SystemClock_Config(void);
dflet 4:c27adffcfec2 68
dflet 4:c27adffcfec2 69 void DCMI_IRQHandler(void);
dflet 4:c27adffcfec2 70 void DMA2_Stream1_IRQHandler(void);
dflet 0:50cedd586816 71
dflet 0:50cedd586816 72 /** System Clock Configuration
dflet 0:50cedd586816 73 */
dflet 0:50cedd586816 74 static void SystemClock_Config(void)
dflet 0:50cedd586816 75 {
dflet 0:50cedd586816 76
dflet 12:7d75ba5deed1 77 // SystemCoreClockUpdate();
dflet 12:7d75ba5deed1 78 /*
dflet 0:50cedd586816 79 RCC_OscInitTypeDef RCC_OscInitStruct;
dflet 0:50cedd586816 80 RCC_ClkInitTypeDef RCC_ClkInitStruct;
dflet 11:404bd8bb7fa6 81 // RCC_PeriphCLKInitTypeDef PeriphClkInitStruct;//Used for ov7670 test
dflet 3:7643714ec664 82
dflet 0:50cedd586816 83 __PWR_CLK_ENABLE();
dflet 7:a069c1750fbc 84 // __GPIOH_CLK_ENABLE(); //Enable HSE Clock 8MHz
dflet 0:50cedd586816 85 __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
dflet 0:50cedd586816 86
dflet 0:50cedd586816 87 RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
dflet 0:50cedd586816 88 RCC_OscInitStruct.HSEState = RCC_HSE_ON;
dflet 0:50cedd586816 89 RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
dflet 0:50cedd586816 90 RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
dflet 0:50cedd586816 91 RCC_OscInitStruct.PLL.PLLM = 8;
dflet 0:50cedd586816 92 RCC_OscInitStruct.PLL.PLLN = 336;
dflet 0:50cedd586816 93 RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
dflet 0:50cedd586816 94 RCC_OscInitStruct.PLL.PLLQ = 7;
dflet 0:50cedd586816 95 HAL_RCC_OscConfig(&RCC_OscInitStruct);
dflet 0:50cedd586816 96
dflet 0:50cedd586816 97 RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1
dflet 0:50cedd586816 98 |RCC_CLOCKTYPE_PCLK2;
dflet 0:50cedd586816 99 RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
dflet 0:50cedd586816 100 RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
dflet 0:50cedd586816 101 RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
dflet 0:50cedd586816 102 RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
dflet 0:50cedd586816 103 HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5);
dflet 0:50cedd586816 104
dflet 3:7643714ec664 105 //Used for ov7670 test
dflet 11:404bd8bb7fa6 106 // PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_PLLI2S;//|RCC_PERIPHCLK_I2S;
dflet 11:404bd8bb7fa6 107 // PeriphClkInitStruct.PLLI2S.PLLI2SN = 192;
dflet 11:404bd8bb7fa6 108 // PeriphClkInitStruct.PLLI2S.PLLI2SR = 2;
dflet 11:404bd8bb7fa6 109 // HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct);
dflet 12:7d75ba5deed1 110 */
dflet 7:a069c1750fbc 111 /* RCC_MCODIV_5 33.6MHz mco2 output on pin PC_9 (cam xclk) */
dflet 7:a069c1750fbc 112 /* RCC_MCODIV_4 42MHz mco2 output on pin PC_9 (cam xclk) */
dflet 7:a069c1750fbc 113 /* RCC_MCODIV_3 56MHz mco2 output on pin PC_9 (cam xclk) */
dflet 7:a069c1750fbc 114 // HAL_RCC_MCOConfig(RCC_MCO2, RCC_MCO2SOURCE_SYSCLK, RCC_MCODIV_4);
dflet 4:c27adffcfec2 115
dflet 7:a069c1750fbc 116 /* RCC_MCODIV_1 16MHz mco1 output on pin PA_8 (cam xclk) */
dflet 13:bf45f592c2b6 117 // HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_HSI, RCC_MCODIV_1);
dflet 7:a069c1750fbc 118
dflet 7:a069c1750fbc 119 /* RCC_MCODIV_1 8MHz mco2 output on pin PC_9 (cam xclk) */
dflet 7:a069c1750fbc 120 /* RCC_MCODIV_2 4MHz mco2 output on pin PC_9 (cam xclk) */
dflet 7:a069c1750fbc 121 /* RCC_MCODIV_4 2MHz mco2 output on pin PC_9 (cam xclk) */
dflet 13:bf45f592c2b6 122 HAL_RCC_MCOConfig(RCC_MCO2, RCC_MCO2SOURCE_HSE, RCC_MCODIV_1);
dflet 4:c27adffcfec2 123
dflet 3:7643714ec664 124 //Used for ov7670 test
dflet 7:a069c1750fbc 125 /* RCC_MCODIV_4 24MHz mco2 output on pin PC_9 (cam xclk) */
dflet 11:404bd8bb7fa6 126 // HAL_RCC_MCOConfig(RCC_MCO2, RCC_MCO2SOURCE_PLLI2SCLK, RCC_MCODIV_4);
dflet 0:50cedd586816 127
dflet 12:7d75ba5deed1 128 // HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);
dflet 3:7643714ec664 129
dflet 12:7d75ba5deed1 130 // HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);
dflet 4:c27adffcfec2 131
dflet 4:c27adffcfec2 132 /* STM32F405x/407x/415x/417x Revision Z devices: prefetch is supported */
dflet 4:c27adffcfec2 133 // if (HAL_GetREVID() == 0x1001)
dflet 4:c27adffcfec2 134 // {
dflet 4:c27adffcfec2 135 /* Enable the Flash prefetch */
dflet 4:c27adffcfec2 136 // __HAL_FLASH_PREFETCH_BUFFER_ENABLE();
dflet 4:c27adffcfec2 137 // }
dflet 3:7643714ec664 138
dflet 0:50cedd586816 139 }
dflet 0:50cedd586816 140
dflet 1:1a80c1529aa3 141 /* Warning if pin changes are made below then the same changes have to be made in the following files.
dflet 0:50cedd586816 142 * httpserverapp.cpp
dflet 0:50cedd586816 143 * HttpCore.cpp
dflet 0:50cedd586816 144 * HttpSocket.cpp
dflet 0:50cedd586816 145 * HttpStatic.cpp
dflet 0:50cedd586816 146 * fPtr_func.cpp
dflet 0:50cedd586816 147 */
dflet 0:50cedd586816 148
dflet 0:50cedd586816 149 /* Off board leds */
dflet 0:50cedd586816 150 DigitalOut led1(PB_15);
dflet 0:50cedd586816 151 DigitalOut led2(PB_14);
dflet 9:b7c6e7303df5 152
dflet 0:50cedd586816 153 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 154
dflet 0:50cedd586816 155 void initLEDs(void);
dflet 0:50cedd586816 156 void toggleLed(int ind);
dflet 0:50cedd586816 157 static void DisplayBanner(char * AppName);
dflet 0:50cedd586816 158
dflet 0:50cedd586816 159 #define PRINT_BUF_LEN 128
dflet 0:50cedd586816 160 int8_t print_buf[PRINT_BUF_LEN];
dflet 0:50cedd586816 161
dflet 0:50cedd586816 162 //*****************************************************************************
dflet 0:50cedd586816 163 // LOCAL DEFINES
dflet 0:50cedd586816 164 //*****************************************************************************
dflet 0:50cedd586816 165 #define APP_NAME "WebSocket"
dflet 0:50cedd586816 166
dflet 0:50cedd586816 167 void initLEDs(void){
dflet 0:50cedd586816 168
dflet 0:50cedd586816 169 #if (THIS_BOARD == Seeed_Arch_Max)
dflet 0:50cedd586816 170 led1 = 0;
dflet 0:50cedd586816 171 led2 = 0;
dflet 0:50cedd586816 172 #endif
dflet 0:50cedd586816 173
dflet 0:50cedd586816 174 }
dflet 0:50cedd586816 175
dflet 0:50cedd586816 176 void toggleLed(int ind){
dflet 0:50cedd586816 177
dflet 0:50cedd586816 178 if(ind == 1){
dflet 0:50cedd586816 179 led1 = !led1;
dflet 0:50cedd586816 180 }
dflet 0:50cedd586816 181 if(ind == 2){
dflet 0:50cedd586816 182 led2 = !led2;
dflet 0:50cedd586816 183 }
dflet 0:50cedd586816 184
dflet 0:50cedd586816 185 }
dflet 0:50cedd586816 186
dflet 0:50cedd586816 187 //*****************************************************************************
dflet 0:50cedd586816 188 //
dflet 0:50cedd586816 189 //! Application startup display on UART
dflet 0:50cedd586816 190 //!
dflet 0:50cedd586816 191 //! \param none
dflet 0:50cedd586816 192 //!
dflet 0:50cedd586816 193 //! \return none
dflet 0:50cedd586816 194 //!
dflet 0:50cedd586816 195 //*****************************************************************************
dflet 0:50cedd586816 196
dflet 0:50cedd586816 197 //#ifndef NOTERM
dflet 0:50cedd586816 198 static void
dflet 0:50cedd586816 199 DisplayBanner(char * AppName)
dflet 0:50cedd586816 200 {
dflet 0:50cedd586816 201
dflet 0:50cedd586816 202 Report("\n\n\n\r");
dflet 0:50cedd586816 203 Report(" *************************************************\n\r");
dflet 0:50cedd586816 204 Report(" CC3100 %s Application \n\r", AppName);
dflet 0:50cedd586816 205 Report(" *************************************************\n\r");
dflet 0:50cedd586816 206 Report("\n\n\n\r");
dflet 0:50cedd586816 207 }
dflet 0:50cedd586816 208 //#endif
dflet 0:50cedd586816 209
dflet 0:50cedd586816 210 //****************************************************************************
dflet 0:50cedd586816 211 // MAIN FUNCTION
dflet 0:50cedd586816 212 //****************************************************************************
dflet 0:50cedd586816 213 int main(void) {
dflet 0:50cedd586816 214
dflet 12:7d75ba5deed1 215 SCB->SHCSR |= 0x00070000;
dflet 0:50cedd586816 216 int rv = 0;
dflet 3:7643714ec664 217
dflet 12:7d75ba5deed1 218 // HAL_Init();
dflet 4:c27adffcfec2 219
dflet 0:50cedd586816 220 SystemClock_Config();
dflet 12:7d75ba5deed1 221 // DMAConfig();
dflet 3:7643714ec664 222
dflet 0:50cedd586816 223 //
dflet 0:50cedd586816 224 // Configuring UART
dflet 0:50cedd586816 225 //
dflet 0:50cedd586816 226 CLI_Configure();
dflet 7:a069c1750fbc 227 initLEDs();
dflet 0:50cedd586816 228
dflet 4:c27adffcfec2 229 // toggleLed(1);
dflet 0:50cedd586816 230 //#ifndef NOTERM
dflet 0:50cedd586816 231
dflet 0:50cedd586816 232 //
dflet 0:50cedd586816 233 // Configuring UART
dflet 0:50cedd586816 234 //
dflet 0:50cedd586816 235 // CLI_Configure();
dflet 0:50cedd586816 236
dflet 0:50cedd586816 237 memset(print_buf, 0x00, PRINT_BUF_LEN);
dflet 0:50cedd586816 238 sprintf((char*) print_buf, " \r\nSystemCoreClock = %dMHz\r\n ", SystemCoreClock /1000000);
dflet 0:50cedd586816 239 rv = Uart_Write((uint8_t *) print_buf);
dflet 0:50cedd586816 240 if(rv < 0){
dflet 0:50cedd586816 241 while(1){
dflet 0:50cedd586816 242 toggleLed(1);
dflet 0:50cedd586816 243 wait(0.1);
dflet 0:50cedd586816 244 }
dflet 0:50cedd586816 245 }
dflet 0:50cedd586816 246
dflet 0:50cedd586816 247 //
dflet 0:50cedd586816 248 // Display Application Banner
dflet 0:50cedd586816 249 //
dflet 0:50cedd586816 250 DisplayBanner(APP_NAME);
dflet 0:50cedd586816 251
dflet 0:50cedd586816 252 //#endif
dflet 0:50cedd586816 253
dflet 0:50cedd586816 254 //
dflet 0:50cedd586816 255 // Start the SimpleLink Host
dflet 0:50cedd586816 256 //
dflet 0:50cedd586816 257 VStartSimpleLinkSpawnTask(SPAWN_TASK_PRIORITY);
dflet 0:50cedd586816 258 //
dflet 0:50cedd586816 259 // Start the HttpServer Task
dflet 0:50cedd586816 260 //
dflet 0:50cedd586816 261 //
dflet 0:50cedd586816 262
dflet 0:50cedd586816 263 osi_TaskCreate(HttpServerAppTask,
dflet 0:50cedd586816 264 "WebSocketApp",
dflet 0:50cedd586816 265 OSI_STACK_SIZE,
dflet 0:50cedd586816 266 NULL,
dflet 0:50cedd586816 267 HTTP_SERVER_APP_TASK_PRIORITY,
dflet 0:50cedd586816 268 NULL );
dflet 0:50cedd586816 269
dflet 0:50cedd586816 270 Uart_Write((uint8_t*)"HttpServerApp Initialized \n\r");
dflet 0:50cedd586816 271
dflet 0:50cedd586816 272 //
dflet 0:50cedd586816 273 // Start the task scheduler
dflet 0:50cedd586816 274 //
dflet 0:50cedd586816 275 osi_start();
dflet 0:50cedd586816 276
dflet 0:50cedd586816 277 return 0;
dflet 0:50cedd586816 278 }
dflet 0:50cedd586816 279
dflet 4:c27adffcfec2 280 /**
dflet 4:c27adffcfec2 281 * @brief This function handles Hard Fault exception.
dflet 4:c27adffcfec2 282 * @param None
dflet 4:c27adffcfec2 283 * @retval None
dflet 4:c27adffcfec2 284 */
dflet 4:c27adffcfec2 285 extern "C" void HardFault_Handler(void)
dflet 4:c27adffcfec2 286 {
dflet 4:c27adffcfec2 287 /* Go to infinite loop when Hard Fault exception occurs */
dflet 12:7d75ba5deed1 288 Uart_Write((uint8_t*)"\n\rHardFault_Handler \n\r");
dflet 5:75fcfdb7cae7 289 printf("Hard Fault Register SCB->HSFR 0x%X \r\n",SCB->HFSR);
dflet 5:75fcfdb7cae7 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 5:75fcfdb7cae7 292 printf("Call to Memory Address SCB->MMFAR 0x%X ERROR!\r\n",SCB->MMFAR);
dflet 4:c27adffcfec2 293 Uart_Write((uint8_t*)"HardFault_Handler \n\r");
dflet 4:c27adffcfec2 294 while (1)
dflet 4:c27adffcfec2 295 {
dflet 4:c27adffcfec2 296 }
dflet 4:c27adffcfec2 297 }
dflet 4:c27adffcfec2 298
dflet 4:c27adffcfec2 299 /**
dflet 4:c27adffcfec2 300 * @brief This function handles Memory Manage exception.
dflet 4:c27adffcfec2 301 * @param None
dflet 4:c27adffcfec2 302 * @retval None
dflet 4:c27adffcfec2 303 */
dflet 4:c27adffcfec2 304 extern "C" void MemManage_Handler(void)
dflet 12:7d75ba5deed1 305 {
dflet 12:7d75ba5deed1 306 Uart_Write((uint8_t*)"\n\rMemManage_Handler \n\r");
dflet 12:7d75ba5deed1 307 printf("Fault bits set SCB->CFSR 0x%X \r\n",SCB->CFSR);
dflet 12:7d75ba5deed1 308 printf("Call to Memory Address SCB->BFAR 0x%X ERROR!\r\n",SCB->BFAR);
dflet 12:7d75ba5deed1 309 printf("Call to Memory Address SCB->MMFAR 0x%X ERROR!\r\n",SCB->MMFAR);
dflet 4:c27adffcfec2 310 Uart_Write((uint8_t*)"MemManage_Handler \n\r");
dflet 4:c27adffcfec2 311 /* Go to infinite loop when Memory Manage exception occurs */
dflet 4:c27adffcfec2 312 while (1)
dflet 4:c27adffcfec2 313 {
dflet 4:c27adffcfec2 314 }
dflet 4:c27adffcfec2 315 }
dflet 4:c27adffcfec2 316
dflet 4:c27adffcfec2 317 /**
dflet 4:c27adffcfec2 318 * @brief This function handles Bus Fault exception.
dflet 4:c27adffcfec2 319 * @param None
dflet 4:c27adffcfec2 320 * @retval None
dflet 4:c27adffcfec2 321 */
dflet 4:c27adffcfec2 322 extern "C" void BusFault_Handler(void)
dflet 4:c27adffcfec2 323 {
dflet 12:7d75ba5deed1 324 Uart_Write((uint8_t*)"\n\rBusFault_Handler \n\r");
dflet 12:7d75ba5deed1 325 printf("Fault bits set SCB->CFSR 0x%X \r\n",SCB->CFSR);
dflet 12:7d75ba5deed1 326 printf("Call to Memory Address SCB->BFAR 0x%X ERROR!\r\n",SCB->BFAR);
dflet 12:7d75ba5deed1 327 printf("Call to Memory Address SCB->MMFAR 0x%X ERROR!\r\n",SCB->MMFAR);
dflet 4:c27adffcfec2 328 Uart_Write((uint8_t*)"BusFault_Handler \n\r");
dflet 4:c27adffcfec2 329 /* Go to infinite loop when Bus Fault exception occurs */
dflet 4:c27adffcfec2 330 while (1)
dflet 4:c27adffcfec2 331 {
dflet 4:c27adffcfec2 332 }
dflet 4:c27adffcfec2 333 }
dflet 4:c27adffcfec2 334
dflet 4:c27adffcfec2 335 /**
dflet 4:c27adffcfec2 336 * @brief This function handles Usage Fault exception.
dflet 4:c27adffcfec2 337 * @param None
dflet 4:c27adffcfec2 338 * @retval None
dflet 4:c27adffcfec2 339 */
dflet 4:c27adffcfec2 340 extern "C" void UsageFault_Handler(void)
dflet 4:c27adffcfec2 341 {
dflet 4:c27adffcfec2 342 Uart_Write((uint8_t*)"UsageFault_Handler \n\r");
dflet 4:c27adffcfec2 343 /* Go to infinite loop when Usage Fault exception occurs */
dflet 4:c27adffcfec2 344 while (1)
dflet 4:c27adffcfec2 345 {
dflet 4:c27adffcfec2 346 }
dflet 4:c27adffcfec2 347 }
dflet 4:c27adffcfec2 348
dflet 4:c27adffcfec2 349 /**
dflet 4:c27adffcfec2 350 * @brief This function handles SVCall exception.
dflet 4:c27adffcfec2 351 * @param None
dflet 4:c27adffcfec2 352 * @retval None
dflet 4:c27adffcfec2 353 */
dflet 4:c27adffcfec2 354 /*
dflet 4:c27adffcfec2 355 extern "C" void SVC_Handler(void)
dflet 4:c27adffcfec2 356 {
dflet 4:c27adffcfec2 357 Uart_Write((uint8_t*)"SVC_Handler \n\r");
dflet 4:c27adffcfec2 358 }
dflet 4:c27adffcfec2 359 */
dflet 4:c27adffcfec2 360 /**
dflet 4:c27adffcfec2 361 * @brief This function handles Debug Monitor exception.
dflet 4:c27adffcfec2 362 * @param None
dflet 4:c27adffcfec2 363 * @retval None
dflet 4:c27adffcfec2 364 */
dflet 4:c27adffcfec2 365 extern "C" void DebugMon_Handler(void)
dflet 4:c27adffcfec2 366 {
dflet 4:c27adffcfec2 367 Uart_Write((uint8_t*)"DebugMon_Handler \n\r");
dflet 4:c27adffcfec2 368 }
dflet 4:c27adffcfec2 369
dflet 4:c27adffcfec2 370 /**
dflet 4:c27adffcfec2 371 * @brief This function handles PendSVC exception.
dflet 4:c27adffcfec2 372 * @param None
dflet 4:c27adffcfec2 373 * @retval None
dflet 4:c27adffcfec2 374 */
dflet 4:c27adffcfec2 375 /*
dflet 4:c27adffcfec2 376 extern "C" void PendSV_Handler(void)
dflet 4:c27adffcfec2 377 {
dflet 4:c27adffcfec2 378 Uart_Write((uint8_t*)"PendSV_Handler \n\r");
dflet 4:c27adffcfec2 379 }
dflet 4:c27adffcfec2 380 */
dflet 4:c27adffcfec2 381 /**
dflet 4:c27adffcfec2 382 * @brief This function handles SysTick Handler.
dflet 4:c27adffcfec2 383 * @param None
dflet 4:c27adffcfec2 384 * @retval None
dflet 4:c27adffcfec2 385 */
dflet 4:c27adffcfec2 386 /*
dflet 4:c27adffcfec2 387 extern "C" void SysTick_Handler(void)
dflet 4:c27adffcfec2 388 {
dflet 4:c27adffcfec2 389 Uart_Write((uint8_t*)"SysTick_Handler \n\r");
dflet 4:c27adffcfec2 390 HAL_IncTick();
dflet 4:c27adffcfec2 391 }
dflet 4:c27adffcfec2 392 */
dflet 4:c27adffcfec2 393 /**
dflet 4:c27adffcfec2 394 * @brief DMA interrupt handler.
dflet 4:c27adffcfec2 395 * @param None
dflet 4:c27adffcfec2 396 * @retval None
dflet 4:c27adffcfec2 397 */
dflet 11:404bd8bb7fa6 398 /*
dflet 4:c27adffcfec2 399 void DMA2_Stream1_IRQHandler(void)
dflet 4:c27adffcfec2 400 {
dflet 5:75fcfdb7cae7 401 DMA_HandleTypeDef hdma_dcmi;
dflet 4:c27adffcfec2 402 Uart_Write((uint8_t*)"DMA2_Stream1_IRQHandler \n\r");
dflet 4:c27adffcfec2 403 HAL_DMA_IRQHandler(&hdma_dcmi);
dflet 4:c27adffcfec2 404 }
dflet 11:404bd8bb7fa6 405 */
dflet 4:c27adffcfec2 406 /**
dflet 4:c27adffcfec2 407 * @brief DCMI interrupt handler.
dflet 4:c27adffcfec2 408 * @param None
dflet 4:c27adffcfec2 409 * @retval None
dflet 4:c27adffcfec2 410 */
dflet 11:404bd8bb7fa6 411 /*
dflet 4:c27adffcfec2 412 void DCMI_IRQHandler(void)
dflet 4:c27adffcfec2 413 {
dflet 5:75fcfdb7cae7 414 DCMI_HandleTypeDef hdcmi;
dflet 4:c27adffcfec2 415 Uart_Write((uint8_t*)"DCMI_IRQHandler \n\r");
dflet 4:c27adffcfec2 416 HAL_DCMI_IRQHandler(&hdcmi);
dflet 4:c27adffcfec2 417 }
dflet 11:404bd8bb7fa6 418 */
dflet 0:50cedd586816 419 //*****************************************************************************
dflet 0:50cedd586816 420 //
dflet 0:50cedd586816 421 // Close the Doxygen group.
dflet 0:50cedd586816 422 //! @}
dflet 0:50cedd586816 423 //
dflet 0:50cedd586816 424 //*****************************************************************************
dflet 0:50cedd586816 425