stm32f407ze RCC_MCO一直没反应!!!

2019-07-21 03:35发布

我最近在搞ov7670 SCCB能通讯 设置成功但是开启了MCO我没有示波器也不知道有没有频率 OV7670的D0~D7一直是0xff!是不是没给时钟的原因? [mw_shl_code=c,true]以下是主函数调用 int main(void) { u8 data1; u8 data2; u32 i; delay_init(168); LCD_Init(); LCD_Clear(0);; OV7670_init(); LCD_SetAdd(0,0,239,319); for(i=0;i<76800;i++) { CLK_init_ON(); // OV7670 XCLK ?? data1=GPIOF->IDR; CLK_init_OFF(); //OV7670 XCLK ?? CLK_init_ON(); // OV7670 XCLK ?? data2=GPIOF->IDR>>8; CLK_init_OFF(); //OV7670 XCLK ?? LCD_WR_DATA8(data1); LCD_WR_DATA8(data2); } while(1) { } } 以下驱动程序 void CLK_init_ON(void) { GPIO_InitTypeDef GPIO_InitStructure; /* Configure MCO2 pin(PC9) in alternate function */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_PinAFConfig(GPIOC,GPIO_Pin_9,GPIO_AF_MCO); /* System clock selected to output on MCO2 pin(PC9)*/ RCC_MCO2Config(RCC_MCO2Source_HSE, RCC_MCO2Div_2); } void CLK_init_OFF(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_Init(GPIOC, &GPIO_InitStructure); } void OV7670_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; /* Enable GPIOC clock */ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3| GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//GPIO_Mode_AF_OD GPIO_Mode_AF_PP GPIO_Mode_IPU GPIO_Mode_IN_FLOATING GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_OD; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOF, &GPIO_InitStructure); } void OV7670_GPIO_CONTRL_CONFIG(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Pin = LCD_HREF_BIT|LCD_VSYNC_BIT|LCD_PCLK_BIT; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_OType = GPIO_OType_OD; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOC, &GPIO_InitStructure); /* System clock selected to output on MCO2 pin(PC9)*/ //RCC_MCO2Config(RCC_MCO2Source_SYSCLK, RCC_MCO2Div_2); } //////////////////////////// //????????OV7670?????÷ //·?????1-???? 0-?§°? unsigned char wrOV7670Reg(unsigned char regID, unsigned char regDat) { startSCCB(); if(0==SCCBwriteByte(0x42)) { stopSCCB(); return(0); } delay_us(100); if(0==SCCBwriteByte(regID)) { stopSCCB(); return(0); } delay_us(100); if(0==SCCBwriteByte(regDat)) { stopSCCB(); return(0); } stopSCCB(); return(1); } //////////////////////////// //????????OV7670?????÷ //·?????1-???? 0-?§°? unsigned char rdOV7670Reg(unsigned char regID, unsigned char *regDat) { //?¨??????×÷?è???????÷???· startSCCB(); if(0==SCCBwriteByte(0x42)) { stopSCCB(); return(0); } delay_us(100); if(0==SCCBwriteByte(regID)) { stopSCCB(); return(0); } stopSCCB(); delay_us(100); //?è???????÷???·?ó???????? startSCCB(); if(0==SCCBwriteByte(0x43)) { stopSCCB(); return(0); } delay_us(100); *regDat=SCCBreadByte(); noAck(); stopSCCB(); return(1); } //(140,16,640,480) is good for VGA //(272,16,320,240) is good for QVGA /* config_OV7670_window */ void OV7670_config_window(unsigned int startx,unsigned int starty,unsigned int width, unsigned int height) { unsigned int endx; unsigned int endy;// "v*2"±??? unsigned char temp_reg1, temp_reg2; unsigned char temp=0; endx=(startx+width); endy=(starty+height+height);// "v*2"±??? rdOV7670Reg(0x03, &temp_reg1 ); temp_reg1 &= 0xf0; rdOV7670Reg(0x32, &temp_reg2 ); temp_reg2 &= 0xc0; // Horizontal temp = temp_reg2|((endx&0x7)<<3)|(startx&0x7); wrOV7670Reg(0x32, temp ); temp = (startx&0x7F8)>>3; wrOV7670Reg(0x17, temp ); temp = (endx&0x7F8)>>3; wrOV7670Reg(0x18, temp ); // Vertical temp =temp_reg1|((endy&0x3)<<2)|(starty&0x3); wrOV7670Reg(0x03, temp ); temp = starty>>2; wrOV7670Reg(0x19, temp ); temp = endy>>2; wrOV7670Reg(0x1A, temp ); } void set_OV7670reg(void) { wrOV7670Reg(0x8c, 0x00); wrOV7670Reg(0x3a, 0x04); wrOV7670Reg(0x40, 0xd0); //?­??10???¨??COM15???è??????????·??§?????????? wrOV7670Reg(0x8c, 0x00); wrOV7670Reg(0x12, 0x14); //????????QVGA,?­?è????0x14 wrOV7670Reg(0x32, 0x80); wrOV7670Reg(0x17, 0x16); wrOV7670Reg(0x18, 0x04); wrOV7670Reg(0x19, 0x02); wrOV7670Reg(0x1a, 0x7b);//0x7a, ?­??0x7b wrOV7670Reg(0x03, 0x06);//0x0a, ?­??0x06 wrOV7670Reg(0x0c, 0x04);//?­??0x04 com3,?è????·??????????????? wrOV7670Reg(0x3e, 0x00);// ?­??0x00 com14??dcw??pclk??·??è???????°·????? wrOV7670Reg(0x70, 0x3a); //?­??0x04 wrOV7670Reg(0x71, 0x35); //?­??0x35 wrOV7670Reg(0x72, 0x11); //?­??0x11 wrOV7670Reg(0x73, 0x00);//?­??f0 ??????????±??????? wrOV7670Reg(0xa2, 0x00); //?­??0x02 wrOV7670Reg(0x11, 0xff); //?±????????????????×??ó?????­????0x81 ?¨??±??© //wrOV7670Reg(0x15 , 0x31); wrOV7670Reg(0x7a, 0x20); //?­??0x20 ?????÷7a--89???¤?í?ú???è?? wrOV7670Reg(0x7b, 0x1c); //?­??0x1c wrOV7670Reg(0x7c, 0x28); //?­??0x28 wrOV7670Reg(0x7d, 0x3c); //?­??0x3c wrOV7670Reg(0x7e, 0x55); //?­??0x55 wrOV7670Reg(0x7f, 0x68); //?­??0x68 wrOV7670Reg(0x80, 0x76); //?­??0x76 wrOV7670Reg(0x81, 0x80); //?­??0x80 wrOV7670Reg(0x82, 0x88); //?­??0x88 wrOV7670Reg(0x83, 0x8f); //?­??0x8f wrOV7670Reg(0x84, 0x96); //?­??0x96 wrOV7670Reg(0x85, 0xa3); //?­??0xa3 wrOV7670Reg(0x86, 0xaf); //?­??0xaf wrOV7670Reg(0x87, 0xc4); //?­??0xc4 wrOV7670Reg(0x88, 0xd7); //?­??0xd7 wrOV7670Reg(0x89, 0xe8); //?­??0xe8 wrOV7670Reg(0x32,0xb6); wrOV7670Reg(0x13, 0xff); //?­??0xe0 com13 AGC,AWB,AEC???????? ?¨??±??© wrOV7670Reg(0x00, 0x00);//AGC //?­??0x00 wrOV7670Reg(0x10, 0x00);//?­??0x00 ?????? wrOV7670Reg(0x0d, 0x00);//?­??0x00 COM4 wrOV7670Reg(0x14, 0x4e);//?­??0x28, limit the max gain ×????????è?? ??±??? wrOV7670Reg(0xa5, 0x05); //?­??0x05 50Hz bangding step limting wrOV7670Reg(0xab, 0x07); //?­??0x07 60Hz bangding step limting wrOV7670Reg(0x24, 0x75); //?­??0x75 agc/aec-???¨???????ò???? wrOV7670Reg(0x25, 0x63); //?­??0x63 agc/aec-???¨???????ò???? wrOV7670Reg(0x26, 0xA5); //?­??0xa5 agc/aec-?ì?????????ò wrOV7670Reg(0x9f, 0x78); //?­??0x78 ?ù???±·?????aec/agc??????1 wrOV7670Reg(0xa0, 0x68); //?­??0x68 ?ù???±·?????aec/agc??????2 // wrOV7670Reg(0xa1, 0x03);//0x0b, wrOV7670Reg(0xa6, 0xdf);//0xd8, ?­??0xdf ?ù???±·?????aec/agc??????3 wrOV7670Reg(0xa7, 0xdf);//0xd8, ?­??0xdf ?ù???±·?????aec/agc??????4 wrOV7670Reg(0xa8, 0xf0); //?­??0xf0 ?ù???±·?????aec/agc??????5 wrOV7670Reg(0xa9, 0x90); //?­??0x90 ?ù???±·?????aec/agc??????6 wrOV7670Reg(0xaa, 0x94); //?­??0x94 ?ù???±·?????aec/agc??????7 //wrOV7670Reg(0x13, 0xe5); //?­??0xe5 wrOV7670Reg(0x0e, 0x61); //?­??0x61 COM5 wrOV7670Reg(0x0f, 0x43); //?­??0x4b COM6 wrOV7670Reg(0x16, 0x02); //?­??0x02 ±??? wrOV7670Reg(0x1e, 0x37);//0x07, ?­??0x37 ?®??????/?ú?±·­×????? ?è????01?ó·??ú·­×? wrOV7670Reg(0x21, 0x02); //?­??0x02 ±??? wrOV7670Reg(0x22, 0x91); //?­??0x91 ±??? wrOV7670Reg(0x29, 0x07); //?­??0x07 ±??? wrOV7670Reg(0x33, 0x0b); //?­??0x0b href????????????????80?±??±? wrOV7670Reg(0x35, 0x0b); //?­??0xe0 ±??? wrOV7670Reg(0x37, 0x3f); //?­??0x1d adc???? wrOV7670Reg(0x38, 0x01); //?­??0x71 adc?????????????? wrOV7670Reg(0x39, 0x00); //?­??0x2a adc???????? wrOV7670Reg(0x3c, 0x78); //?­??0x78 COM12 wrOV7670Reg(0x4d, 0x40); //?­??0x40 ±??? wrOV7670Reg(0x4e, 0x20); //?­??0x20 ±??? wrOV7670Reg(0x69, 0x00); //?­??0x00 ???¨???????? wrOV7670Reg(0x6b, 0x4a); //PLL?­??0x00 pll???? ?????è?? wrOV7670Reg(0x74, 0x19); //?­??0x19 ??????×????? wrOV7670Reg(0x8d, 0x4f); //?­??0x4f ±??? wrOV7670Reg(0x8e, 0x00); //?­??0x00 ±??? wrOV7670Reg(0x8f, 0x00); //?­??0x00 ±??? wrOV7670Reg(0x90, 0x00); //?­??0x00 ±??? wrOV7670Reg(0x91, 0x00); //?­??0x00 ±??? wrOV7670Reg(0x92, 0x00); //0x19,//0x66 ?­??0x00 ??????8?? wrOV7670Reg(0x96, 0x00); //?­??0x00 ±??? wrOV7670Reg(0x9a, 0x80); //?­??0x80 ±??? wrOV7670Reg(0xb0, 0x84); //?­??0xe0 ±??? wrOV7670Reg(0xb1, 0x0c); //?­??0x0c ablc?è?? wrOV7670Reg(0xb2, 0x0e); //?­??0x0e ±??? wrOV7670Reg(0xb3, 0x82); //?­??0x82 ablc target wrOV7670Reg(0xb8, 0x0a); //?­??0x0a ±??? wrOV7670Reg(0x43, 0x14); //?­??0x14 43-48??±??? wrOV7670Reg(0x44, 0xf0); //?­??0xf0 wrOV7670Reg(0x45, 0x34); //?­??0x34 wrOV7670Reg(0x46, 0x58); //?­??0x58 wrOV7670Reg(0x47, 0x28); //?­??0x28 wrOV7670Reg(0x48, 0x3a); //?­??0x3a wrOV7670Reg(0x59, 0x88); //?­??0x88 51-5e±??? wrOV7670Reg(0x5a, 0x88); //?­??0x88 wrOV7670Reg(0x5b, 0x44); //?­??0x44 wrOV7670Reg(0x5c, 0x67); //?­??0x67 wrOV7670Reg(0x5d, 0x49); //?­??0x49 wrOV7670Reg(0x5e, 0x0e); //?­??0xe0 wrOV7670Reg(0x64, 0x04); //?­??0x04 64-66???·???? wrOV7670Reg(0x65, 0x20); //?­??0x20 wrOV7670Reg(0x66, 0x05); //?­??0x05 wrOV7670Reg(0x94, 0x04); //?­??0x04 94-95???·???? wrOV7670Reg(0x95, 0x08); //?­??0x08 wrOV7670Reg(0x6c, 0x0a); //?­??0x0a 6c-6fawb?è?? wrOV7670Reg(0x6d, 0x55); //?­??0x55 wrOV7670Reg(0x6e, 0x11); //?­??0x11 wrOV7670Reg(0x6f, 0x9f); //0x9e for advance AWB ?­??9f wrOV7670Reg(0x6a, 0x40); //?­??0x40 g?¨??awb???? wrOV7670Reg(0x01, 0x40); //?­??0x40 b?¨??awb???????? wrOV7670Reg(0x02, 0x40); //?­??0x40 r?¨??awb???????? //wrOV7670Reg(0x13, 0xe7); //?­??0xe7 wrOV7670Reg(0x15, 0x00); //00 cmos10 ????pclk???????? wrOV7670Reg(0x4f, 0x80); //?­??0x80 ?????????????ó?????è?? wrOV7670Reg(0x50, 0x80); //?­??0x80 wrOV7670Reg(0x51, 0x00); //?­??0x00 wrOV7670Reg(0x52, 0x22); //?­??0x22 wrOV7670Reg(0x53, 0x5e); //?­??0x5e wrOV7670Reg(0x54, 0x80); //?­??0x80 wrOV7670Reg(0x58, 0x9e); //?­??0x9e wrOV7670Reg(0x41, 0x08); //?­??0x08 com16 ??????±????è?? wrOV7670Reg(0x3f, 0x00); //?­??0x00 ±????????÷?? wrOV7670Reg(0x75, 0x05); //?­??0x05 wrOV7670Reg(0x76, 0xe1); //?­??0xe1 wrOV7670Reg(0x4c, 0x00); //?­??0x00 ???ù???????? wrOV7670Reg(0x77, 0x01); //?­??0x01 ???ù???????? wrOV7670Reg(0x3d, 0xc1); //0xc0, com13 ?????è?? wrOV7670Reg(0x4b, 0x09); //?­??0x09 ?????÷4b?è?? wrOV7670Reg(0xc9, 0x60); //?­??0x60 ±????????? //wrOV7670Reg(0x41, 0x38); //?­??0x38 com16±????è???è?? wrOV7670Reg(0x56, 0x40);//0x40, change according to Jim's request ??±??????? wrOV7670Reg(0x34, 0x11); //?­??0x11 ?????ó?????????????? wrOV7670Reg(0x3b, 0x02);//0x00,//?­??0x02, com11???? wrOV7670Reg(0xa4, 0x89);//0x88, ?­??89 nt???? wrOV7670Reg(0x96, 0x00); //?­??0x00 ????96-9c±??? wrOV7670Reg(0x97, 0x30); //?­??0x30 wrOV7670Reg(0x98, 0x20); //?­??0x20 wrOV7670Reg(0x99, 0x30); //?­??0x30 wrOV7670Reg(0x9a, 0x84); //?­??0x84 wrOV7670Reg(0x9b, 0x29); //?­??0x29 wrOV7670Reg(0x9c, 0x03); //?­??0x03 wrOV7670Reg(0x9d, 0x4c); //?­??0x4c 50HZ???????¨???? wrOV7670Reg(0x9e, 0x3f); //?­??0x3f 60HZ???????¨???? wrOV7670Reg(0x09, 0x00); //?­??0x00 ?¨???????÷com2 wrOV7670Reg(0x3b, 0xc2);//0x82,//0xc0,//?­??0xc2, //night mode ?­??0xc2 } /* OV7670_init() */ //·???1??????·???0?§°? unsigned char OV7670_init(void) { unsigned char temp; // unsigned int i=0; OV7670_GPIO_Init(); OV7670_GPIO_CONTRL_CONFIG(); SCCB_GPIO_Config(); // io init.. CLK_init_ON(); temp=0x80; if(0==wrOV7670Reg(0x12, temp)) //Reset SCCB { return 0 ; } delay_ms(100); set_OV7670reg(); OV7670_config_window(272,12,320,240);// set 240*320 return 0x01; //ok } [/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。