Beispiel #1
0
/**
 *  @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写允许*/
}
Beispiel #2
0
/**
 *  @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);
}
Beispiel #3
0
/**
 *  @name	VSYNC_EXTI_Configuration
 *  @brief	配置PB7为外部中断引脚
 *  @param  None        
 *  @return None
 *  @notice
	                ___                            ___
	  VSYNC:     __|   |__________________________|   |__     
	 
 */
static void VSYNC_EXTI_Configuration(void)
{
	CKCU_PeripClockConfig_TypeDef CKCUClock = {{0}};
	EXTI_InitTypeDef EXTI_InitStruct;
	
	/* Enable PB & AFIO & EXTI */
	CKCUClock.Bit.PB         = 1;
	CKCUClock.Bit.AFIO 		 = 1;
	CKCUClock.Bit.EXTI 		 = 1;
	CKCU_PeripClockConfig(CKCUClock, ENABLE);

	/* Config EXTI channel 7 */
	EXTI_InitStruct.EXTI_Channel = EXTI_CHANNEL_7;
	EXTI_InitStruct.EXTI_Debounce = EXTI_DEBOUNCE_DISABLE;
	EXTI_InitStruct.EXTI_DebounceCnt = 0;
	EXTI_InitStruct.EXTI_IntType = EXTI_NEGATIVE_EDGE;
	EXTI_Init(&EXTI_InitStruct);
	
	/* Select Port as EXTI Trigger Source */
	AFIO_EXTISourceConfig(AFIO_EXTI_CH_7, AFIO_ESS_PB);
	
	/* Enable EXTI line 7 Interrupt                                                                          */
	EXTI_IntConfig(EXTI_CHANNEL_7, ENABLE);
}
Beispiel #4
0
/**
 * @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);
}