/** * @name FIFO_GPIO_Config * @brief 配置OV7670的FIFO芯片引脚 * @param None * @return None * @notice */ static void FIFO_GPIO_Config(void) { CKCU_PeripClockConfig_TypeDef CKCUClock = {{0}}; /* Enable PB */ CKCUClock.Bit.PB = 1; CKCU_PeripClockConfig(CKCUClock, ENABLE); /* 配置为输出引脚 */ GPIO_DirectionConfig(HT_GPIOB, GPIO_PIN_0 | /* PB0,STROBE,闪光灯控制 */ GPIO_PIN_2 | /* PB2,FIFO_WRST,FIFO写复位 */ GPIO_PIN_3 | /* PB3, FIFO_RRST,FIFO读复位 */ GPIO_PIN_4 | /* PB4,FIFO_OE,FIFO输出使能 */ GPIO_PIN_5 | /* PB5,FIFO_RCK,FIFO读时钟 */ GPIO_PIN_6 /* PB6,FIFO_WE,FIFO写使能 */ , GPIO_DIR_OUT); /* 配置PB8~PB15为输入引脚,用于FIFO数据采集输入 */ GPIO_DirectionConfig(HT_GPIOB, GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13| GPIO_PIN_14 | GPIO_PIN_15 , GPIO_DIR_IN); GPIO_InputConfig(HT_GPIOB, GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13| GPIO_PIN_14 | GPIO_PIN_15 , ENABLE); FIFO_CS_L(); /*拉低使FIFO输出使能*/ FIFO_WE_H(); /*拉高使FIFO写允许*/ }
/************************************************************************************//* * @ breif: a simple code segment to show how to config the spi as master mode. * @ in: none * @ return: none **************************************************************************************/ void SPI_MasterMode_Init(void) { SPI_InitTypeDef SPI_InitStructure; /* Enable AFIO & SPI SEL pin port & SPI clock */ CKCU_APBPerip0ClockConfig(CKCU_APBEN0_AFIO | CKCU_APBEN0_PB | CKCU_APBEN0_SPI, ENABLE); /* Configure SPI SEL pin */ GPIO_SetOutBits(GPIOB, GPIO_PIN_7); GPIO_DirectionConfig(GPIOB, GPIO_PIN_7, GPIO_DIR_OUT); /* SPI Configuration */ SPI_InitStructure.SPI_Mode = SPI_MASTER; SPI_InitStructure.SPI_FIFO = SPI_FIFO_DISABLE; SPI_InitStructure.SPI_DataLength = SPI_DATALENGTH_8; SPI_InitStructure.SPI_SSMode = SPI_SS_SOFTWARE; SPI_InitStructure.SPI_SSPolarity = SPI_SSPOLARITY_LOW; SPI_InitStructure.SPI_FirstBit = SPI_FIRSTBIT_MSB; SPI_InitStructure.SPI_CPOL = SPI_CPOL_HIGH; SPI_InitStructure.SPI_CPHA = SPI_CPHA_SECOND; SPI_InitStructure.SPI_RxFIFOTriggerLevel = 0; SPI_InitStructure.SPI_TxFIFOTriggerLevel = 0; SPI_InitStructure.SPI_ClockPrescaler = 4; SPI_Init(SPI, &SPI_InitStructure); SPI_SSOutputCmd(SPI, ENABLE); SPI_Cmd(SPI, ENABLE); }
/** * @name VSYNC_GPIO_Configuration * @brief 配置PB7作为OV7670 VSYNC场引脚 * @param None * @return None * @notice */ static void VSYNC_GPIO_Configuration(void) { CKCU_PeripClockConfig_TypeDef CKCUClock = {{0}}; /* Enable PB */ CKCUClock.Bit.PB = 1; CKCU_PeripClockConfig(CKCUClock, ENABLE); /* 配置PB7作为VSYNC引脚 */ GPIO_DirectionConfig(HT_GPIOB, GPIO_PIN_7, GPIO_DIR_IN); /* Enable GPIO Input Function */ GPIO_InputConfig(HT_GPIOB, GPIO_PIN_7, ENABLE); /* 由于要配置为下降沿触发的中断模式,因此上拉该引脚 */ GPIO_PullResistorConfig(HT_GPIOB, GPIO_PIN_7, GPIO_PR_UP); }
/*********************************************************************************************************//** * @brief Configures led. * @retval None ***********************************************************************************************************/ void LED_Configuration() { CKCU_APBPerip0ClockConfig(CKCU_APBEN0_PA, ENABLE); GPIO_DirectionConfig(GPIOA, GPIO_PIN_5, GPIO_DIR_OUT); }