Hallo mal wieder. nach den letzten Raschlägen habe ich mir eine OV7670 Cam sowie ein STm32F429I Discovery Board gekauft. Nach einiger Spielerei mit eclipse und C++ bin ich im Internet auf die folgende Seite gestoßen: www.urel.feec.vutbr.cz/MPOA/2014/cam-ov7670 Ich habe mit AMR Keil installiert und die OV7670 entsprechend der Beschreibung angeschlossen. Weiterhin habe ich das Projekt heruntergeladen und in Keil geladen. Dazu habe ich noch einige Libraries installiert. Jetzt habe ich folgendes Problem : Zu der main gehören, wie ihr aus der Projekt-Spalte entnehmen könnt, mehrere Unterfunktionen. Diese Unterfunktionen wurden nicht von mir eingefügt, sondern von der Person, die den Code geschrieben hat. Wenn ich nun mit F7 "target build" durchführe, werden folgende Fehlermeldungen ausgegeben: Error instantiating RTE components Error #540: 'Keil::Device:StdPeriph Drivers:DCMI:1.3.0' component is not available for target 'OptRec' Error #540: 'Keil::Device:StdPeriph Drivers:DMA:1.3.0' component is not available for target 'OptRec' Error #540: 'Keil::Device:StdPeriph Drivers:Framework:1.3.1' component is not available for target 'OptRec' Error #540: 'Keil::Device:StdPeriph Drivers:GPIO:1.3.0' component is not available for target 'OptRec' Error #540: 'Keil::Device:StdPeriph Drivers:I2C:1.3.0' component is not available for target 'OptRec' Error #540: 'Keil::Device:StdPeriph Drivers:RCC:1.3.0' component is not available for target 'OptRec' Error #540: 'Keil::Device:StdPeriph Drivers:SPI:1.3.0' component is not available for target 'OptRec' Error #540: 'Keil::Device:StdPeriph Drivers:TIM:1.3.0' component is not available for target 'OptRec' Das sind genau die mit einem gelben Zeichen markierten Dateien. Diese Fehlermeldungen rühren daher, dass die Pfade der Unterfunktionen falsch sind. Die Pfade sind noch so gesetzt, wie die Ordner des Urhebers aufgebaut waren. Um das Problem zu beheben habe ich die in dem Dateiordner vorhandenen .c und .h Dateien händisch in den jeweiligen Unterordner kopiert. Vergeblich. Meine Frage also: Wie werden die Funktionen richtig initialisiert und oder die Pfade zu meinen Ordnern angepasst ? Anbei habe ich einige Bilder zum besseren Verständnis angefügt. Vielen Dank schon mal für Eure Mühen !
Christian H. schrieb: > AMR Keil installiert Hab ich keine Ahnung von. Vielleicht irgend was wie bei der Paketinstallation? RTE muss evtl. dahin wo auch die anderen Pakete sind. ************************************************************** Aus Spaß habe ich dein Projekt einfach mal in AC6 probiert. Entgegen der Erwartung, wird es ohne Probleme gebaut.
http://www.openstm32.org/HomePage Kann man mit Anmeldung dort herunterladen, geht aber auch anders. Ich habe aktuell Neon mit dem Plugin installiert. Siehe: Beitrag "Re: STM32F7 Discovery Board" Geht auch für Win. Musst nur die richtigen Punkte auswählen.
Guten Tag, gestern bin ich ein Wenig weiter gekommen. Der Fehler liegt in der Datei stm32f4xx_conf.h(StdPeriph Drivers:Framework).Dort werden auch RTE eingebunden. Diese wird vom System nicht gefunden und enthält exakt die Dateien, die Probleme machen. Wie ist die übergeordnete "Device" Datei mit der main verknüpft, bzw. wie ist der Fehler zu beheben ?
Ich beantworte mir die Frage einmal selbst. Die Funktionen, die den Fehler auslösen sind im Run-Time Environment-Manager nicht ausgewählt und auch nicht vorhanden. Bildausschnitt anbei, erklärender Link darunter. http://www.keil.com/support/man/docs/uv4/uv4_ca_rtemanager.htm Die Nächste Frage: Wo läd man die StdPeriph Diver Bib herunter ? Ich habe google bemüht, aber leider nichts gefunden. Gruß Wegweiser
Hallo erstmal, zum einen musst du mal schauen ob da etwas mit update oder Download steht, das müsste dann so auch funktionieren zum anderen bist du hier glaube ich zumindest im falschen Forum,da hier die wenigsten hilfreiche tips dir geben können zum Thema Stm32. hier dreht sich meist alles um die schrottigen AVR's
jonny p schrieb: > zum anderen bist du hier glaube ich zumindest im falschen Forum,da hier > die wenigsten hilfreiche tips dir geben können zum Thema Stm32. Ich denke nicht. Gefühlte 90% unter dem Filter 'ARM' betrifft STM32. Christian H. schrieb: > Wo läd man die StdPeriph Diver Bib herunter ? Ich habe google bemüht, > aber leider nichts gefunden. Wohl nicht genau genug :) https://www.google.de/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=stdperiph%20stm32 http://www.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software/stm32-standard-peripheral-libraries.html?querycriteria=productId=LN1939
Hallo mal wieder. Nachdem ich nun einige Wochen mit dem Bord und der OV7670 herumprobiert habe, ist ein neues Problem aufgreten, auf das ich keine Antwort weis. Auf meinem Display erscheinen nur ungeordnete Pixel. Wenn ich den Deckel aufsetze (=dunkel), färben sich die Pixel rötlich..... In den Anlagen 2 Bilder von der OV7670 und dem STM32F429ZI. Der Code ist mit CoCOX programmiert worden. Als Hintergrundwissen dienten folgende Seiten: http://embeddedprogrammer.blogspot.de/2012/07/hacking-ov7670-camera-module-sccb-cheat.html http://supuntharanga.blogspot.de/2014/04/stm32f4-discovery-board-ov7660-or.html http://www.urel.feec.vutbr.cz/MPOA/2014/cam-ov7670 Ich hoffe einer von euch hat wieder einmal eine Idee... Mit in dem Code sind noch Teile von einer OV3640, was ich von einem Forenmitglied kopiert habe. // PA4 -> DCMI_HSYNC = Camera HSYNC (HREF) // PA6 -> DCMI_PCLK = Camera PCLK (PIXCLK) // PA8 -> DCMI_XCLK = Camera XCL // PB7 -> DCMI_VSYNC = Camera VSYNC // PB8 -> I2C1-SCL = Camera I2C-SCL // PB9 -> I2C1-SDA = Camera I2C-SDA // PC6 -> DCMI_D0 = Camera D0 // PC7 -> DCMI_D1 = Camera D1 // PC8 -> DCMI_D2 = Camera D2 // PC9 -> DCMI_D3 = Camera D3 // PE4 -> DCMI_D4 = Camera D4 // PD3 -> DCMI_D5 = Camera D5 // PE5 -> DCMI_D6 = Camera D6 // PE6 -> DCMI_D7 = Camera D7 // #define cam_ov7670 0 #define cam_ov3640 1 #define cam_mtd112 2//not yet tested #define cam_chip 1 volatile uint8_t registerValue; #define DELAY_MS 0 #define ARRAY_END 0xff typedef struct CamReg_t{ uint16_t addr; uint8_t data; } CamReg; #if cam_chip==cam_ov7670 #define cam_adr 0x42 #define reg_datei ov7670_reg #define vsync_signal DCMI_VSPolarity_High #define hline_signal DCMI_HSPolarity_Low #define pclk_polarity DCMI_PCKPolarity_Rising #define sccb_bus_wr sccb_wr_8_8 #define sccb_bus_rd sccb_rd_8_8 //#define cam_format cam_formatVGA u32 h_px=1024, v_px=768; //640 480 #define cam_format_xQVGA 2 #define regDateiFile "ov7670_regs.h" #endif #if cam_chip==cam_ov3640 #define cam_adr 0x78 #define vsync_signal DCMI_VSPolarity_Low #define hline_signal DCMI_HSPolarity_Low #define pclk_polarity DCMI_PCKPolarity_Rising //#define pclk_polarity DCMI_PCKPolarity_Falling #define sccb_bus_wr sccb_wr_16_8 #define sccb_bus_rd sccb_rd_16_8 #define cam_format_xQVGA 3 u32 h_px=1024, v_px=768; #define reg_datei ov3640_xga #define regDateiFile "ov3640_regxxx.h" #endif #if cam_chip==cam_mtd112//not tested #define cam_adr 0xba #define vsync_signal DCMI_VSPolarity_Low #define hline_signal DCMI_HSPolarity_Low #define pclk_polarity DCMI_PCKPolarity_Rising #define sccb_bus_wr sccb_wr_16_16 #define sccb_bus_rd sccb_rd_16_16 //#define cam_format cam_formatQVGA #define cam_format_xQVGA 2 #define reg_datei mtd112_reg #define regDateiFile "mt9d112_regs.h" #endif /*#if cam_format==cam_formatQVGA #define H_PX 320 #define V_PX 240 #endif #if cam_format==cam_formatVGA*/ #define H_PX 320*cam_format_xQVGA #define V_PX 240*cam_format_xQVGA /*#endif #if cam_format==cam_formatUXGA //#define H_PX 1600 //#define V_PX 1200 #define H_PX 320*3 #define V_PX 240*3 #endif */ #include regDateiFile #define DCMI_DR_REGISTER DCMI_BASE|0x28 #define SDRAM_START_ADRx ((uint32_t)0xD0000000) #define cam_bufferStart SDRAM_START_ADRx //#define H_PX 640 //#define V_PX 480 #define pwdn_high pinSET(C,14) #define pwdn_low pinCLR(C,14) volatile uint16_t *pixel_cursorDB=cam_bufferStart+H_PX<<3;//>*10; volatile uint32_t zl_Hline; void DMA2_Stream1_IRQHandler(void){ if(DMA_GetITStatus(DMA2_Stream1, DMA_IT_TCIF1)){//TransferComplete DMA_ClearITPendingBit(DMA2_Stream1, DMA_IT_TCIF1); zl_Hline+=8; pixel_cursorDB+=h_px<<3;//*8 if((zl_Hline)%16){//line0 ready - start line1 DMA2_Stream1->M0AR=0xD0000000+4*h_px*zl_Hline; }else{//line1 ready - start line0 DMA2_Stream1->M1AR=0xD0000000+4*h_px*zl_Hline; } } } void cam_InitXCLK(){ GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); // war auskom. GPIO_PinAFConfig(GPIOA, GPIO_PinSource8, GPIO_AF_MCO); // PA8 = XCL GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; // war auskom. //GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; // war auskom. GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; // neu GPIO_Init(GPIOA, &GPIO_InitStructure); //HSE 8mhz HSI 16mhz PLLC 168mhz // RCC_MCO1Config(RCC_MCO1Source_HSE,RCC_MCO1Div_1); // RCC_MCO1Config(RCC_MCO1Source_HSI,RCC_MCO1Div_1); RCC_MCO1Config(RCC_MCO1Source_PLLCLK,RCC_MCO1Div_5); //Pwdn GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure); //GPIOG->OSPEEDR= GPIO_Speed_50MHz<<(2*pin); } void cam_InitIO(void) { GPIO_InitTypeDef GPIO_InitStructure; GPIO_PinAFConfig(GPIOA, GPIO_PinSource4, GPIO_AF_DCMI); // PA4=DCMI_HSYNC -> HSNYC GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_DCMI); // PA6=DCMI_PCLK -> PCLK // Structur fuer Port-A GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_6 | GPIO_Pin_8; // Pin 8 auskommentieren GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; //war drin GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP ; // neu von mir // Config von Port-A GPIO_Init(GPIOA, &GPIO_InitStructure); //----------------------------------------- // Alle Pins von Port-B initialisieren //----------------------------------------- //GPIO_PinAFConfig(GPIOB, GPIO_PinSource6, GPIO_AF_DCMI); // PB6=DCMI_D5 -> D5 GPIO_PinAFConfig(GPIOB, GPIO_PinSource7, GPIO_AF_DCMI); // PB7=DCMI_VSYNC -> VSYNC // Structur fuer Port-B GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; // Config von Port-B GPIO_Init(GPIOB, &GPIO_InitStructure); //----------------------------------------- // Alle Pins von Port-C initialisieren //----------------------------------------- GPIO_PinAFConfig(GPIOC, GPIO_PinSource6, GPIO_AF_DCMI); // PC6=DCMI_D0 -> D0 GPIO_PinAFConfig(GPIOC, GPIO_PinSource7, GPIO_AF_DCMI); // PC7=DCMI_D1 -> D1 GPIO_PinAFConfig(GPIOC, GPIO_PinSource8, GPIO_AF_DCMI); // PC8=DCMI_D2 -> D2 GPIO_PinAFConfig(GPIOC, GPIO_PinSource9, GPIO_AF_DCMI); // PC9=DCMI_D3 -> D3 // Structur fuer Port-C GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; // Config von Port-C GPIO_Init(GPIOC, &GPIO_InitStructure); //----------------------------------------- // Alle Pins von Port-d initialisieren //----------------------------------------- GPIO_PinAFConfig(GPIOD, GPIO_PinSource3, GPIO_AF_DCMI); // PC6=DCMI_D0 -> D0 // Structur fuer Port-d GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; // Config von Port-d GPIO_Init(GPIOD, &GPIO_InitStructure); //----------------------------------------- // Alle Pins von Port-E initialisieren //----------------------------------------- // GPIO_PinAFConfig(GPIOE, GPIO_PinSource0, GPIO_AF_DCMI); // PE0=DCMI_D2 -> D4 // GPIO_PinAFConfig(GPIOE, GPIO_PinSource1, GPIO_AF_DCMI); // PE1=DCMI_D3 -> D4 GPIO_PinAFConfig(GPIOE, GPIO_PinSource4, GPIO_AF_DCMI); // PE4=DCMI_D4 -> D4 GPIO_PinAFConfig(GPIOE, GPIO_PinSource5, GPIO_AF_DCMI); // PE5=DCMI_D6 -> D6 GPIO_PinAFConfig(GPIOE, GPIO_PinSource6, GPIO_AF_DCMI); // PE6=DCMI_D7 -> D7 // Structur fuer Port-E GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6;//|GPIO_Pin_0 |GPIO_Pin_1 ; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; // Config von Port-E GPIO_Init(GPIOE, &GPIO_InitStructure); //HSE 8mhz HSI 16mhz PLLC 168mhz // RCC_MCO1Config(RCC_MCO1Source_HSI,RCC_MCO1Div_1); RCC_MCO1Config(RCC_MCO1Source_PLLCLK,RCC_MCO1Div_5); pinDIRout(B,9); } void mco_xclock_on (void){ RCC->CFGR |= RCC_MCO1Source_PLLCLK; } void mco_xclock_off (void){ RCC->CFGR &=~ RCC_MCO1Source_PLLCLK; } void powerDnSeq(void){ mco_xclock_off(); pwdn_low; } void cam_powerUpSeq(void){ powerDnSeq(); _delay_ms(300); pwdn_high; _delay_ms(11); mco_xclock_on(); _delay_ms(11); pwdn_low; _delay_ms(20); } void cam_init_sccb_io(void) { GPIO_InitTypeDef GPIO_InitStructure; // Clock Enable //RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); // Config PG13 als Digital-Ausgang GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; GPIO_Init(GPIOB, &GPIO_InitStructure); } void cam_InitDCMI(void){ DCMI_InitTypeDef DCMI_InitStructure; // Clock enable RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_DCMI, ENABLE); // DCMI init //DCMI_InitStructure.DCMI_CaptureMode = DCMI_CaptureMode_SnapShot; DCMI_InitStructure.DCMI_CaptureMode = DCMI_CaptureMode_Continuous; DCMI_InitStructure.DCMI_SynchroMode = DCMI_SynchroMode_Hardware; //DCMI_InitStructure.DCMI_PCKPolarity = pclk_polarity; DCMI_InitStructure.DCMI_PCKPolarity = DCMI_PCKPolarity_Rising;//of7670 // DCMI_InitStructure.DCMI_PCKPolarity = DCMI_PCKPolarity_Falling; //DCMI_InitStructure.DCMI_VSPolarity = vsync_signal; DCMI_InitStructure.DCMI_VSPolarity = DCMI_VSPolarity_High;//of7670 // DCMI_InitStructure.DCMI_HSPolarity = hline_signal; DCMI_InitStructure.DCMI_HSPolarity = DCMI_HSPolarity_Low;//of7670 DCMI_InitStructure.DCMI_CaptureRate = DCMI_CaptureRate_1of4_Frame; DCMI_InitStructure.DCMI_ExtendedDataMode = DCMI_ExtendedDataMode_8b; DCMI_Init(&DCMI_InitStructure); } //-------------------------------------------------------------- void cam_InitDMA(void){ DMA_InitTypeDef DMA_InitStructure; // Clock enable RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE); // DMA deinit DMA_Cmd(DMA2_Stream1, DISABLE); DMA_DeInit(DMA2_Stream1); // DMA init DMA_InitStructure.DMA_Channel = DMA_Channel_1; DMA_InitStructure.DMA_PeripheralBaseAddr =&DCMI->DR;// OV9655_DCMI_REG_DR_ADDRESS;// DMA_InitStructure.DMA_Memory0BaseAddr = 0xD0000000;//LCD_RAM_ADR; DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory; DMA_InitStructure.DMA_BufferSize = h_px*8; DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; // DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable; DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word; //DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte; // DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte; DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word; DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; DMA_InitStructure.DMA_Priority = DMA_Priority_High; // DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable; 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_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_INC4; DMA_Init(DMA2_Stream1, &DMA_InitStructure); DMA_DoubleBufferModeCmd(DMA2_Stream1, ENABLE); // DMA_MemoryTargetConfig(DMA2_Stream1,pixel_cursorDB+100000, DMA_Memory_1); DMA2_Stream1->M1AR=0xD0000000+h_px*8*4; DMA_ITConfig(DMA2_Stream1,DMA_IT_TC,ENABLE); } void cam_CaptureStart(void){ // Cursor auf Start setzen // UB_LCD_SetCursor2Draw(LCD_WINDOW.xstart,LCD_WINDOW.ystart); // DMA enable // cam_InitDCMI(); zl_Hline=0; DMA2_Stream1->M0AR=0xD0000000; DMA2_Stream1->M1AR=0xD0000000+H_PX*8*4; cam_InitDMA(); DMA_Cmd(DMA2_Stream1, ENABLE); // DCMI enable DCMI_Cmd(ENABLE); // Capture enable DCMI_CaptureCmd(ENABLE); } //-------------------------------------------------------------- // stoppen vom Capture-Mode // und stopen vom LCD zugriff //-------------------------------------------------------------- void camx_CaptureStop(void) { // Capture disable DCMI_CaptureCmd(DISABLE); // DCMI disable DCMI_Cmd(DISABLE); // DMA disable DMA_Cmd(DMA2_Stream1, DISABLE); } void DMA2Stream1_InitNVIC(void){ NVIC_InitTypeDef NVIC_InitStructure; DMA_ITConfig(DMA2_Stream1, DMA_IT_TC, ENABLE); NVIC_InitStructure.NVIC_IRQChannel = DMA2_Stream1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } void cam_init(void){ // init vom Camera-Modul }
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.