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:
Tue Jun 30 22:51:05 2015 +0000
Revision:
4:c27adffcfec2
Parent:
3:7643714ec664
Child:
5:75fcfdb7cae7
WIP commit 5

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