/** * @brief Stop the CAMERA capture * @retval Camera status */ uint8_t BSP_CAMERA_Stop(void) { uint8_t status = CAMERA_ERROR; if(HAL_DCMI_Stop(&hDcmiEval) == HAL_OK) { status = CAMERA_OK; } /* Set Camera in Power Down */ BSP_CAMERA_PwrDown(); return status; }
/** * @brief Stop the CAMERA capture * @param None * @retval Camera status */ uint8_t BSP_CAMERA_Stop(void) { DCMI_HandleTypeDef *phdcmi; uint8_t ret = CAMERA_ERROR; /* Get the DCMI handle structure */ phdcmi = &hDcmiEval; if(HAL_DCMI_Stop(phdcmi) == HAL_OK) { ret = CAMERA_OK; } /* Set Camera in Power Down */ BSP_CAMERA_PwrDown(); return ret; }
/** * @brief Main program * @param None * @retval None */ int main(void) { uint8_t lcd_status = LCD_OK; p_bmp_converted_pixel_data = (uint8_t *)CONVERTED_FRAME_BUFFER; offset_address_area_cam_in_lcd_buffer = ((((LcdResY - CameraResY) / 2) * LcdResX) + ((LcdResX - CameraResX) / 2)) * ARGB8888_BYTE_PER_PIXEL; /* For the first Camera line event callback : set the offset to display camera image in the center */ /* of LCD frame buffer background */ lcd_datapointer = offset_address_area_cam_in_lcd_buffer; /* STM32F4xx HAL library initialization: - Configure the Flash prefetch, instruction and Data caches - Configure the Systick to generate an interrupt each 1 msec - Set NVIC Group Priority to 4 - Global MSP (MCU Support Package) initialization */ HAL_Init(); /* Configure the system clock to 180 MHz */ SystemClock_Config(); BSP_IO_Init(); /* Reset and power down camera to be sure camera is Off prior start testing BSP */ BSP_CAMERA_HwReset(); BSP_CAMERA_PwrDown(); /* Configure LED1 and LED3 */ BSP_LED_Init(LED1); BSP_LED_Init(LED3); /*##-1- LCD DSI initialization in mode Video Burst with two LTDC layers of size 800x480 */ lcd_status = BSP_LCD_Init(); if(lcd_status != LCD_OK) { Error_Handler(); } BSP_LCD_LayerDefaultInit(LTDC_ACTIVE_LAYER_BACKGROUND, LCD_BG_LAYER_ADDRESS); BSP_LCD_LayerDefaultInit(LTDC_ACTIVE_LAYER_FOREGROUND, LCD_FB_START_ADDRESS); /* Select Foreground Layer */ BSP_LCD_SelectLayer(LTDC_ACTIVE_LAYER_FOREGROUND); /* Clear the LCD Foreground layer */ BSP_LCD_Clear(LCD_COLOR_WHITE); /* Disable the LTDC Foreground layer */ BSP_LCD_SetLayerVisible(LTDC_ACTIVE_LAYER_FOREGROUND, DISABLE); /* Select the LCD Background layer */ BSP_LCD_SelectLayer(LTDC_ACTIVE_LAYER_BACKGROUND); BSP_LCD_Clear(LCD_COLOR_WHITE); /*##-2- Init Host Library ##################################################*/ /* Display USB initialization message */ BSP_LCD_SetTextColor(LCD_COLOR_DARKBLUE); BSP_LCD_SetFont(&Font24); BSP_LCD_DisplayStringAt(20, (BSP_LCD_GetYSize() - 24), (uint8_t *)"USB init ..", RIGHT_MODE); USBH_Init(&hUSB_Host, USBH_UserProcess, 0); /* Add Supported Class */ USBH_RegisterClass(&hUSB_Host, USBH_MSC_CLASS); /* Start Host Process */ USBH_Start(&hUSB_Host); /*##-3- Configure TAMPER Button ############################################*/ BSP_PB_Init(BUTTON_TAMPER, BUTTON_MODE_GPIO); /*##-4- Link the USB Host disk I/O driver ##################################*/ FATFS_LinkDriver(&USBH_Driver, MSC_Path); /*##-5- Camera Initialization and start capture ############################*/ /* Display camera initialization message */ BSP_LCD_DisplayStringAt(20, (BSP_LCD_GetYSize() - 24), (uint8_t *)"Camera init ..", RIGHT_MODE); /* Initialize the Camera */ BSP_CAMERA_Init(RESOLUTION_R480x272); /* Start the Camera Capture */ BSP_CAMERA_ContinuousStart((uint8_t *)CAMERA_FRAME_BUFFER); BSP_LCD_DisplayStringAt(20, (BSP_LCD_GetYSize() - 48), (uint8_t *)"Press TAMPER button to take snapshot", RIGHT_MODE); BSP_LCD_DisplayStringAt(20, (BSP_LCD_GetYSize() - 24), (uint8_t *)"Camera Play ..", RIGHT_MODE); /*##-6- Run Application ####################################################*/ while (1) { /* USB Host Background task */ USBH_Process(&hUSB_Host); switch(Appli_state) { case STORAGE_READY: CAMERA_Capture(); break; case STORAGE_IDLE: break; } } }
/** * @brief Main program * @param None * @retval None */ int main(void) { uint8_t lcd_status = LCD_OK; uint32_t ts_status = TS_OK; p_bmp_converted_pixel_data = (uint8_t *)CONVERTED_FRAME_BUFFER; /* STM32F4xx HAL library initialization: - Configure the Flash prefetch, instruction and Data caches - Configure the Systick to generate an interrupt each 1 msec - Set NVIC Group Priority to 4 - Global MSP (MCU Support Package) initialization */ HAL_Init(); /* Configure the system clock to 180 MHz */ SystemClock_Config(); /* Init MFX needed by TS, SD detect and CameraPwrDown */ BSP_IO_Init(); /* Configure LED1 and LED3 */ BSP_LED_Init(LED1); BSP_LED_Init(LED3); /*##-1- LCD Initialization #################################################*/ /* Initialize and start the LCD display in mode 'lcd_mode' * Using LCD_FB_START_ADDRESS as frame buffer displayed contents. * This buffer is modified by the BSP (draw fonts, objects depending on BSP calls). */ /* Set Portrait orientation if needed, by default orientation is set to Landscape */ /* Initialize DSI LCD */ BSP_LCD_Init(); /* Uncomment if default config (landscape orientation) is needed */ while(lcd_status != LCD_OK); BSP_LCD_LayerDefaultInit(0, LCD_FB_START_ADDRESS); /* Clear the LCD Background layer */ BSP_LCD_Clear(LCD_COLOR_WHITE); /*##-2- Touch screen initialization ########################################*/ BSP_TS_ResetTouchData(&TS_State); /* If calibration is not yet done, proceed with calibration */ if (TouchScreen_IsCalibrationDone() == 0) { ts_status = Touchscreen_Calibration(); if(ts_status == TS_OK) { BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize() - 65, (uint8_t *)"Touchscreen calibration success.", CENTER_MODE); } } /* of if (TouchScreen_IsCalibrationDone() == 0) */ /* ########################################################################### When the uSD Card is used; the Camera module must be unplugged, this is due to the shared pins between the two devices. Otherwise, you have to set camera sensor in Power Down mode, by calling the BSP_CAMERA_PwrDown() available under stm32469i_eval_camera.c BSP driver */ /* Set camera sensor in Power Down mode */ BSP_CAMERA_PwrDown(); /*##-3- Link the SD Card disk I/O driver ###################################*/ /* Clear the LCD and display waiting message */ BSP_LCD_Clear(LCD_COLOR_WHITE); BSP_LCD_SetTextColor(LCD_COLOR_BLACK); BSP_LCD_SetBackColor(LCD_COLOR_WHITE); BSP_LCD_SetFont(&Font12); BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()/2 - 27, (uint8_t*)"Please WAIT few seconds", CENTER_MODE); BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()/2 - 12, (uint8_t*)"Creating FAT file system on SD card", CENTER_MODE); if(FATFS_LinkDriver(&SD_Driver, SDPath) != 0) { /* FatFs Initialization Error */ BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()/2 + 3, (uint8_t*)"FAT FS Error !!", CENTER_MODE); Error_Handler(); } /*##-4- Register the file system object to the FatFs module ################*/ if(f_mount(&SDFatFs, (TCHAR const*)SDPath, 0) != FR_OK) { /* FatFs Initialization Error */ BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()/2 + 3, (uint8_t*)"FAT FS Error !!", CENTER_MODE); Error_Handler(); } /* Create a FAT file system (format) on the logical drive */ if(f_mkfs((TCHAR const*)SDPath, 0, 0) != FR_OK) { BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()/2 + 3, (uint8_t*)"FAT FS Error !!", CENTER_MODE); Error_Handler(); } /*##-5- Draw the menu ######################################################*/ Draw_Menu(); /* Infinite loop */ while (1) { /*##-6- Configure the touch screen and Get the position ####################*/ GetPosition(); } }
/** * @brief Main program * @param None * @retval None */ int main(void) { /* STM32F4xx HAL library initialization: - Configure the Flash prefetch, instruction and Data caches - Configure the Systick to generate an interrupt each 1 msec - Set NVIC Group Priority to 4 - Global MSP (MCU Support Package) initialization */ HAL_Init(); /* Configure the system clock to 180 Mhz */ SystemClock_Config(); BSP_IO_Init(); /* Set camera sensor in Power Down mode */ BSP_CAMERA_PwrDown(); BSP_LED_Init(LED1); BSP_LED_Init(LED2); BSP_LED_Init(LED3); BSP_LED_Init(LED4); BSP_LED_Toggle(LED4); /* Configure the User Button in GPIO Mode */ BSP_PB_Init(BUTTON_KEY, BUTTON_MODE_GPIO); /* temporary for debugging MFX */ /* BSP_MFX_reg_access_for_debug(); */ /*##-1- Initialize the LCD #################################################*/ /* Initialize the LCD */ BSP_LCD_Init(); Display_DemoDescription(); /* Wait For User inputs */ while (1) { if ( MfxToggleLed == 1) { BSP_LED_Toggle(LED4); MfxToggleLed = 0; } if(BSP_PB_GetState(BUTTON_KEY) != RESET) { HAL_Delay(10); while (BSP_PB_GetState(BUTTON_KEY) != RESET); BSP_examples[DemoIndex++].DemoFunc(); if(DemoIndex >= COUNT_OF_EXAMPLE(BSP_examples)) { /* Increment number of loops which be used by EEPROM example */ NbLoop++; DemoIndex = 0; } Display_DemoDescription(); } } }