/** * @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 初始化SPI0 * @param * @retval None */ void SPI0_Init(void) { CKCU_PeripClockConfig_TypeDef CKCUClock = {{0}}; /* Enable PA & SPI0 & AFIO */ CKCUClock.Bit.PA = 1; CKCUClock.Bit.SPI0 = 1; CKCUClock.Bit.AFIO = 1; CKCU_PeripClockConfig(CKCUClock, ENABLE); /* SPI0_SEL idle state is HIGH */ GPIO_PullResistorConfig(HT_GPIOA, GPIO_PIN_8, GPIO_PR_UP); /* Configure related IO to SPI0 */ AFIO_GPAConfig(AFIO_PIN_4 | AFIO_PIN_5 | AFIO_PIN_6 | AFIO_PIN_7, AFIO_MODE_5); /* SPI0 configuration */ SPI_InitStructure.SPI_Mode = SPI_MASTER; SPI_InitStructure.SPI_FIFO = SPI_FIFO_DISABLE; SPI_InitStructure.SPI_DataLength = SPI_DATALENGTH_8; SPI_InitStructure.SPI_SELMode = SPI_SEL_SOFTWARE; SPI_InitStructure.SPI_SELPolarity = SPI_SELPOLARITY_LOW; SPI_InitStructure.SPI_CPOL = SPI_CPOL_LOW; SPI_InitStructure.SPI_CPHA = SPI_CPHA_FIRST; SPI_InitStructure.SPI_FirstBit = SPI_FIRSTBIT_MSB; SPI_InitStructure.SPI_RxFIFOTriggerLevel = 0; SPI_InitStructure.SPI_TxFIFOTriggerLevel = 0; SPI_InitStructure.SPI_ClockPrescaler = 4; SPI_Init(HT_SPI0, &SPI_InitStructure); /* Set SEL as output mode for slave select */ SPI_SELOutputCmd(HT_SPI0, ENABLE); /* Enable SPI0 */ SPI_Cmd(HT_SPI0, ENABLE); }