simonlee0311 wrote on Saturday, April 14, 2012:
Dear all:
My program was modify from ST official httpserver_netconn. Now it can connected with my iPad, then I try to compile with my CMOS sensor subroutine. (CMOS sensor subroutine can works.) Finally, I want show the image on web browser.
Tragedy was happened.
It can not responses my web request, and keeps in CMOS sensor action.
**Dose anyone has any suggestion? Please help, give me some advice. In the end how to do it more correct. **
The below is parts of my program.
int main(void)
{
SRAM_Init();
Reset_OV9655_Config();//reset OV9655
LCD_LED_Init(); /*Initialize LCD and Leds */
ETH_BSP_Config(); /* configure ethernet (GPIOs, clocks, MAC, DMA) */
LwIP_Init(); /* Initilaize the LwIP stack */
http_server_netconn_init(); /* Initialize webserver */
#ifdef USE_DHCP
xTaskCreate(LwIP_DHCP_task, “DHCPClient”, configMINIMAL_STACK_SIZE, NULL,DHCP_TASK_PRIO, NULL); /* Start DHCPClient */
#endif
xTaskCreate(ToggleLed4, “LED1”, configMINIMAL_STACK_SIZE, NULL, LED_TASK_PRIO, NULL); /* Start toogleLed4 task : Toggle LED4 every 250ms */
xTaskCreate(DCMI_OV9655_Start, “DCMI_OV9655_Start”, configMINIMAL_STACK_SIZE, NULL, DCMI_TASK_PRIO, NULL);
/* Start scheduler */
vTaskStartScheduler();
/* We should never get here as control is now taken by the scheduler */
for( ;; );
}
void DCMI_OV9655_Start((void * pvParameters)
/* Configures the DMA2 to transfer Data from DCMI to the LCD ****************/
/* Enable DMA2 clock */
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE);
/* DMA2 Stream1 Configuration */
DMA_DeInit(DMA2_Stream1);
DMA_InitStructure.DMA_Channel = DMA_Channel_1;// in reference maual only DMA2_Stream1/Channel1 can for DCMI function
DMA_InitStructure.DMA_PeripheralBaseAddr = DCMI_DR_ADDRESS;
DMA_InitStructure.DMA_Memory0BaseAddr = FSMC_LCD_ADDRESS;
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;
DMA_InitStructure.DMA_BufferSize = 100;//BufferSize = 1 by PeripheralDataSize_Word(32b) =32b=4B=2pixel. means 4byte transfers one time
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;//external address increase disable
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable; //RAM address increase disable
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;//DMA_Mode_Normal ;
DMA_InitStructure.DMA_Priority = DMA_Priority_High;
DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Enable;
DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full;
DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
DMA_Init(DMA2_Stream1, &DMA_InitStructure);
}