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:
Wed Jul 01 22:45:49 2015 +0000
Revision:
5:75fcfdb7cae7
Parent:
4:c27adffcfec2
Child:
6:37fb696395d7
WIP commit 6

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 5:75fcfdb7cae7 93 //DCMI_HandleTypeDef hdcmi;
dflet 5:75fcfdb7cae7 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 5:75fcfdb7cae7 162 DCMI_HandleTypeDef hdcmi;
dflet 5:75fcfdb7cae7 163 DMA_HandleTypeDef hdma_dcmi;
dflet 0:50cedd586816 164
dflet 0:50cedd586816 165 hdcmi.Instance = DCMI;
dflet 0:50cedd586816 166 hdcmi.Init.SynchroMode = DCMI_SYNCHRO_HARDWARE;
dflet 3:7643714ec664 167 hdcmi.Init.PCKPolarity = DCMI_PCKPOLARITY_RISING;//FALLING
dflet 0:50cedd586816 168 hdcmi.Init.VSPolarity = DCMI_VSPOLARITY_LOW;
dflet 0:50cedd586816 169 hdcmi.Init.HSPolarity = DCMI_HSPOLARITY_LOW;
dflet 0:50cedd586816 170 hdcmi.Init.CaptureRate = DCMI_CR_ALL_FRAME;
dflet 0:50cedd586816 171 hdcmi.Init.ExtendedDataMode = DCMI_EXTEND_DATA_8B;
dflet 0:50cedd586816 172 #ifdef ENABLE_JPEG
dflet 0:50cedd586816 173 hdcmi.Init.JPEGMode = DCMI_JPEG_ENABLE;
dflet 0:50cedd586816 174 #else
dflet 0:50cedd586816 175 hdcmi.Init.JPEGMode = DCMI_JPEG_DISABLE;
dflet 4:c27adffcfec2 176 #endif
dflet 4:c27adffcfec2 177
dflet 4:c27adffcfec2 178 HAL_DCMI_MspInit(&hdcmi);
dflet 0:50cedd586816 179 HAL_DCMI_Init(&hdcmi);
dflet 0:50cedd586816 180
dflet 0:50cedd586816 181 }
dflet 0:50cedd586816 182
dflet 0:50cedd586816 183 /**
dflet 0:50cedd586816 184 * Enable DMA controller clock
dflet 0:50cedd586816 185 */
dflet 0:50cedd586816 186 void MX_DMA_Init(void)
dflet 0:50cedd586816 187 {
dflet 0:50cedd586816 188 /* DMA controller clock enable */
dflet 0:50cedd586816 189 __DMA2_CLK_ENABLE();
dflet 0:50cedd586816 190
dflet 0:50cedd586816 191 /* DMA interrupt init */
dflet 4:c27adffcfec2 192 HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 5, 5);
dflet 3:7643714ec664 193 // HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
dflet 0:50cedd586816 194
dflet 0:50cedd586816 195 }
dflet 0:50cedd586816 196
dflet 1:1a80c1529aa3 197 /* Warning if pin changes are made below then the same changes have to be made in the following files.
dflet 0:50cedd586816 198 * httpserverapp.cpp
dflet 0:50cedd586816 199 * HttpCore.cpp
dflet 0:50cedd586816 200 * HttpSocket.cpp
dflet 0:50cedd586816 201 * HttpStatic.cpp
dflet 0:50cedd586816 202 * fPtr_func.cpp
dflet 0:50cedd586816 203 */
dflet 0:50cedd586816 204
dflet 0:50cedd586816 205 /* Off board leds */
dflet 0:50cedd586816 206 DigitalOut led1(PB_15);
dflet 0:50cedd586816 207 DigitalOut led2(PB_14);
dflet 0:50cedd586816 208 //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 209 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 210
dflet 0:50cedd586816 211 void initLEDs(void);
dflet 0:50cedd586816 212 void toggleLed(int ind);
dflet 0:50cedd586816 213 static void DisplayBanner(char * AppName);
dflet 0:50cedd586816 214
dflet 0:50cedd586816 215 #define PRINT_BUF_LEN 128
dflet 0:50cedd586816 216 int8_t print_buf[PRINT_BUF_LEN];
dflet 0:50cedd586816 217
dflet 0:50cedd586816 218 //*****************************************************************************
dflet 0:50cedd586816 219 // LOCAL DEFINES
dflet 0:50cedd586816 220 //*****************************************************************************
dflet 0:50cedd586816 221 #define APP_NAME "WebSocket"
dflet 0:50cedd586816 222
dflet 0:50cedd586816 223 void initLEDs(void){
dflet 0:50cedd586816 224
dflet 0:50cedd586816 225 #if (THIS_BOARD == Seeed_Arch_Max)
dflet 0:50cedd586816 226 led1 = 0;
dflet 0:50cedd586816 227 led2 = 0;
dflet 0:50cedd586816 228 #endif
dflet 0:50cedd586816 229
dflet 0:50cedd586816 230 }
dflet 0:50cedd586816 231
dflet 0:50cedd586816 232 void toggleLed(int ind){
dflet 0:50cedd586816 233
dflet 0:50cedd586816 234 if(ind == 1){
dflet 0:50cedd586816 235 led1 = !led1;
dflet 0:50cedd586816 236 }
dflet 0:50cedd586816 237 if(ind == 2){
dflet 0:50cedd586816 238 led2 = !led2;
dflet 0:50cedd586816 239 }
dflet 0:50cedd586816 240
dflet 0:50cedd586816 241 }
dflet 0:50cedd586816 242
dflet 0:50cedd586816 243 //*****************************************************************************
dflet 0:50cedd586816 244 //
dflet 0:50cedd586816 245 //! Application startup display on UART
dflet 0:50cedd586816 246 //!
dflet 0:50cedd586816 247 //! \param none
dflet 0:50cedd586816 248 //!
dflet 0:50cedd586816 249 //! \return none
dflet 0:50cedd586816 250 //!
dflet 0:50cedd586816 251 //*****************************************************************************
dflet 0:50cedd586816 252
dflet 0:50cedd586816 253 //#ifndef NOTERM
dflet 0:50cedd586816 254 static void
dflet 0:50cedd586816 255 DisplayBanner(char * AppName)
dflet 0:50cedd586816 256 {
dflet 0:50cedd586816 257
dflet 0:50cedd586816 258 Report("\n\n\n\r");
dflet 0:50cedd586816 259 Report(" *************************************************\n\r");
dflet 0:50cedd586816 260 Report(" CC3100 %s Application \n\r", AppName);
dflet 0:50cedd586816 261 Report(" *************************************************\n\r");
dflet 0:50cedd586816 262 Report("\n\n\n\r");
dflet 0:50cedd586816 263 }
dflet 0:50cedd586816 264 //#endif
dflet 0:50cedd586816 265
dflet 0:50cedd586816 266 //****************************************************************************
dflet 0:50cedd586816 267 // MAIN FUNCTION
dflet 0:50cedd586816 268 //****************************************************************************
dflet 0:50cedd586816 269 int main(void) {
dflet 0:50cedd586816 270
dflet 0:50cedd586816 271 int rv = 0;
dflet 3:7643714ec664 272
dflet 4:c27adffcfec2 273 HAL_Init();
dflet 4:c27adffcfec2 274
dflet 0:50cedd586816 275 SystemClock_Config();
dflet 3:7643714ec664 276
dflet 0:50cedd586816 277 //
dflet 0:50cedd586816 278 // Configuring UART
dflet 0:50cedd586816 279 //
dflet 0:50cedd586816 280 CLI_Configure();
dflet 0:50cedd586816 281
dflet 0:50cedd586816 282 /* Initialize all configured peripherals */
dflet 5:75fcfdb7cae7 283 // MX_DMA_Init();
dflet 5:75fcfdb7cae7 284 // MX_DCMI_Init();
dflet 5:75fcfdb7cae7 285 // initLEDs();
dflet 0:50cedd586816 286
dflet 4:c27adffcfec2 287 // toggleLed(1);
dflet 0:50cedd586816 288 //#ifndef NOTERM
dflet 0:50cedd586816 289
dflet 0:50cedd586816 290 //
dflet 0:50cedd586816 291 // Configuring UART
dflet 0:50cedd586816 292 //
dflet 0:50cedd586816 293 // CLI_Configure();
dflet 0:50cedd586816 294
dflet 0:50cedd586816 295 memset(print_buf, 0x00, PRINT_BUF_LEN);
dflet 0:50cedd586816 296 sprintf((char*) print_buf, " \r\nSystemCoreClock = %dMHz\r\n ", SystemCoreClock /1000000);
dflet 0:50cedd586816 297 rv = Uart_Write((uint8_t *) print_buf);
dflet 0:50cedd586816 298 if(rv < 0){
dflet 0:50cedd586816 299 while(1){
dflet 0:50cedd586816 300 toggleLed(1);
dflet 0:50cedd586816 301 wait(0.1);
dflet 0:50cedd586816 302 }
dflet 0:50cedd586816 303 }
dflet 0:50cedd586816 304
dflet 0:50cedd586816 305 //
dflet 0:50cedd586816 306 // Display Application Banner
dflet 0:50cedd586816 307 //
dflet 0:50cedd586816 308 DisplayBanner(APP_NAME);
dflet 0:50cedd586816 309
dflet 0:50cedd586816 310 //#endif
dflet 0:50cedd586816 311
dflet 0:50cedd586816 312 //
dflet 0:50cedd586816 313 // Start the SimpleLink Host
dflet 0:50cedd586816 314 //
dflet 0:50cedd586816 315 VStartSimpleLinkSpawnTask(SPAWN_TASK_PRIORITY);
dflet 0:50cedd586816 316 //
dflet 0:50cedd586816 317 // Start the HttpServer Task
dflet 0:50cedd586816 318 //
dflet 0:50cedd586816 319 //
dflet 0:50cedd586816 320
dflet 0:50cedd586816 321 osi_TaskCreate(HttpServerAppTask,
dflet 0:50cedd586816 322 "WebSocketApp",
dflet 0:50cedd586816 323 OSI_STACK_SIZE,
dflet 0:50cedd586816 324 NULL,
dflet 0:50cedd586816 325 HTTP_SERVER_APP_TASK_PRIORITY,
dflet 0:50cedd586816 326 NULL );
dflet 0:50cedd586816 327
dflet 0:50cedd586816 328 Uart_Write((uint8_t*)"HttpServerApp Initialized \n\r");
dflet 0:50cedd586816 329
dflet 0:50cedd586816 330 //
dflet 0:50cedd586816 331 // Start the task scheduler
dflet 0:50cedd586816 332 //
dflet 0:50cedd586816 333 osi_start();
dflet 0:50cedd586816 334
dflet 0:50cedd586816 335 return 0;
dflet 0:50cedd586816 336 }
dflet 0:50cedd586816 337
dflet 4:c27adffcfec2 338 /**
dflet 4:c27adffcfec2 339 * @brief This function handles Hard Fault exception.
dflet 4:c27adffcfec2 340 * @param None
dflet 4:c27adffcfec2 341 * @retval None
dflet 4:c27adffcfec2 342 */
dflet 4:c27adffcfec2 343 extern "C" void HardFault_Handler(void)
dflet 4:c27adffcfec2 344 {
dflet 4:c27adffcfec2 345 /* Go to infinite loop when Hard Fault exception occurs */
dflet 5:75fcfdb7cae7 346 printf("Hard Fault Register SCB->HSFR 0x%X \r\n",SCB->HFSR);
dflet 5:75fcfdb7cae7 347 printf("Call to Memory Address SCB->BFAR 0x%X ERROR!\r\n",SCB->BFAR);
dflet 5:75fcfdb7cae7 348 printf("Fault bits set SCB->CFSR 0x%X \r\n",SCB->CFSR);
dflet 5:75fcfdb7cae7 349 printf("Call to Memory Address SCB->MMFAR 0x%X ERROR!\r\n",SCB->MMFAR);
dflet 5:75fcfdb7cae7 350
dflet 4:c27adffcfec2 351 Uart_Write((uint8_t*)"HardFault_Handler \n\r");
dflet 4:c27adffcfec2 352 while (1)
dflet 4:c27adffcfec2 353 {
dflet 4:c27adffcfec2 354 }
dflet 4:c27adffcfec2 355 }
dflet 4:c27adffcfec2 356
dflet 4:c27adffcfec2 357 /**
dflet 4:c27adffcfec2 358 * @brief This function handles Memory Manage exception.
dflet 4:c27adffcfec2 359 * @param None
dflet 4:c27adffcfec2 360 * @retval None
dflet 4:c27adffcfec2 361 */
dflet 4:c27adffcfec2 362 extern "C" void MemManage_Handler(void)
dflet 4:c27adffcfec2 363 {
dflet 4:c27adffcfec2 364 Uart_Write((uint8_t*)"MemManage_Handler \n\r");
dflet 4:c27adffcfec2 365 /* Go to infinite loop when Memory Manage exception occurs */
dflet 4:c27adffcfec2 366 while (1)
dflet 4:c27adffcfec2 367 {
dflet 4:c27adffcfec2 368 }
dflet 4:c27adffcfec2 369 }
dflet 4:c27adffcfec2 370
dflet 4:c27adffcfec2 371 /**
dflet 4:c27adffcfec2 372 * @brief This function handles Bus Fault exception.
dflet 4:c27adffcfec2 373 * @param None
dflet 4:c27adffcfec2 374 * @retval None
dflet 4:c27adffcfec2 375 */
dflet 4:c27adffcfec2 376 extern "C" void BusFault_Handler(void)
dflet 4:c27adffcfec2 377 {
dflet 4:c27adffcfec2 378 Uart_Write((uint8_t*)"BusFault_Handler \n\r");
dflet 4:c27adffcfec2 379 /* Go to infinite loop when Bus Fault exception occurs */
dflet 4:c27adffcfec2 380 while (1)
dflet 4:c27adffcfec2 381 {
dflet 4:c27adffcfec2 382 }
dflet 4:c27adffcfec2 383 }
dflet 4:c27adffcfec2 384
dflet 4:c27adffcfec2 385 /**
dflet 4:c27adffcfec2 386 * @brief This function handles Usage Fault exception.
dflet 4:c27adffcfec2 387 * @param None
dflet 4:c27adffcfec2 388 * @retval None
dflet 4:c27adffcfec2 389 */
dflet 4:c27adffcfec2 390 extern "C" void UsageFault_Handler(void)
dflet 4:c27adffcfec2 391 {
dflet 4:c27adffcfec2 392 Uart_Write((uint8_t*)"UsageFault_Handler \n\r");
dflet 4:c27adffcfec2 393 /* Go to infinite loop when Usage Fault exception occurs */
dflet 4:c27adffcfec2 394 while (1)
dflet 4:c27adffcfec2 395 {
dflet 4:c27adffcfec2 396 }
dflet 4:c27adffcfec2 397 }
dflet 4:c27adffcfec2 398
dflet 4:c27adffcfec2 399 /**
dflet 4:c27adffcfec2 400 * @brief This function handles SVCall exception.
dflet 4:c27adffcfec2 401 * @param None
dflet 4:c27adffcfec2 402 * @retval None
dflet 4:c27adffcfec2 403 */
dflet 4:c27adffcfec2 404 /*
dflet 4:c27adffcfec2 405 extern "C" void SVC_Handler(void)
dflet 4:c27adffcfec2 406 {
dflet 4:c27adffcfec2 407 Uart_Write((uint8_t*)"SVC_Handler \n\r");
dflet 4:c27adffcfec2 408 }
dflet 4:c27adffcfec2 409 */
dflet 4:c27adffcfec2 410 /**
dflet 4:c27adffcfec2 411 * @brief This function handles Debug Monitor exception.
dflet 4:c27adffcfec2 412 * @param None
dflet 4:c27adffcfec2 413 * @retval None
dflet 4:c27adffcfec2 414 */
dflet 4:c27adffcfec2 415 extern "C" void DebugMon_Handler(void)
dflet 4:c27adffcfec2 416 {
dflet 4:c27adffcfec2 417 Uart_Write((uint8_t*)"DebugMon_Handler \n\r");
dflet 4:c27adffcfec2 418 }
dflet 4:c27adffcfec2 419
dflet 4:c27adffcfec2 420 /**
dflet 4:c27adffcfec2 421 * @brief This function handles PendSVC exception.
dflet 4:c27adffcfec2 422 * @param None
dflet 4:c27adffcfec2 423 * @retval None
dflet 4:c27adffcfec2 424 */
dflet 4:c27adffcfec2 425 /*
dflet 4:c27adffcfec2 426 extern "C" void PendSV_Handler(void)
dflet 4:c27adffcfec2 427 {
dflet 4:c27adffcfec2 428 Uart_Write((uint8_t*)"PendSV_Handler \n\r");
dflet 4:c27adffcfec2 429 }
dflet 4:c27adffcfec2 430 */
dflet 4:c27adffcfec2 431 /**
dflet 4:c27adffcfec2 432 * @brief This function handles SysTick Handler.
dflet 4:c27adffcfec2 433 * @param None
dflet 4:c27adffcfec2 434 * @retval None
dflet 4:c27adffcfec2 435 */
dflet 4:c27adffcfec2 436 /*
dflet 4:c27adffcfec2 437 extern "C" void SysTick_Handler(void)
dflet 4:c27adffcfec2 438 {
dflet 4:c27adffcfec2 439 Uart_Write((uint8_t*)"SysTick_Handler \n\r");
dflet 4:c27adffcfec2 440 HAL_IncTick();
dflet 4:c27adffcfec2 441 }
dflet 4:c27adffcfec2 442 */
dflet 4:c27adffcfec2 443 /**
dflet 4:c27adffcfec2 444 * @brief DMA interrupt handler.
dflet 4:c27adffcfec2 445 * @param None
dflet 4:c27adffcfec2 446 * @retval None
dflet 4:c27adffcfec2 447 */
dflet 4:c27adffcfec2 448 void DMA2_Stream1_IRQHandler(void)
dflet 4:c27adffcfec2 449 {
dflet 5:75fcfdb7cae7 450 DCMI_HandleTypeDef hdcmi;
dflet 5:75fcfdb7cae7 451 DMA_HandleTypeDef hdma_dcmi;
dflet 4:c27adffcfec2 452 Uart_Write((uint8_t*)"DMA2_Stream1_IRQHandler \n\r");
dflet 4:c27adffcfec2 453 HAL_DMA_IRQHandler(&hdma_dcmi);
dflet 4:c27adffcfec2 454 }
dflet 4:c27adffcfec2 455
dflet 4:c27adffcfec2 456 /**
dflet 4:c27adffcfec2 457 * @brief DCMI interrupt handler.
dflet 4:c27adffcfec2 458 * @param None
dflet 4:c27adffcfec2 459 * @retval None
dflet 4:c27adffcfec2 460 */
dflet 4:c27adffcfec2 461 void DCMI_IRQHandler(void)
dflet 4:c27adffcfec2 462 {
dflet 5:75fcfdb7cae7 463 DCMI_HandleTypeDef hdcmi;
dflet 5:75fcfdb7cae7 464 DMA_HandleTypeDef hdma_dcmi;
dflet 4:c27adffcfec2 465 Uart_Write((uint8_t*)"DCMI_IRQHandler \n\r");
dflet 4:c27adffcfec2 466 HAL_DCMI_IRQHandler(&hdcmi);
dflet 4:c27adffcfec2 467 }
dflet 4:c27adffcfec2 468
dflet 0:50cedd586816 469 //*****************************************************************************
dflet 0:50cedd586816 470 //
dflet 0:50cedd586816 471 // Close the Doxygen group.
dflet 0:50cedd586816 472 //! @}
dflet 0:50cedd586816 473 //
dflet 0:50cedd586816 474 //*****************************************************************************
dflet 0:50cedd586816 475