#ifndef OV7725_H
#define OV7725_H
/*
*******************************************************************************
* INCLUDE
*******************************************************************************
*/
#include “virtualsccb.h”
/*
*******************************************************************************
* MACROS
*******************************************************************************
*/
/*SCCB总线接口*/
#define OV7725_SCCB_INIT() VirtualSCCB_Init()
#define OV7725_SCCB_WRITEBYTE(wwww) VirtualSCCB_WriteByte(wwww)
#define OV7725_SCCB_READBYTE() VirtualSCCB_ReadByte()
#define OV7725_SCCB_START() VirtualSCCB_Start()
#define OV7725_SCCB_STOP() VirtualSCCB_Stop()
#define OV7725_SCCB_ACK() VirtualSCCB_ACK()
/*CPU与OV7725各引脚初始化*/
#define OV7725_CPU_IO_INIT() \
do{ \
RCC_APB2ENR |= (1 《《 0);/*AFIOEN*/ \
RCC_APB2ENR |= (1 《《 2);/*GPIOAEN*/ \
RCC_APB2ENR |= (1 《《 3);/*GPIOBEN*/ \
\
/*GPIOA8 复用推挽输出50MHz*/ \
GPIOA_CRH &= ~0x0000000F; \
GPIOA_CRH |= 0x0000000B; \
\
/*GPIOB12悬浮输入*/ \
GPIOB_CRH &= ~0x000F0000; \
GPIOB_CRH |= 0x00040000; \
\
/*选择EXTI12中断源为PB12*/ \
AFIO_EXTICR4 &= ~0x0000000F; \
AFIO_EXTICR4 |= 0x00000001; \
\
/*MCO停止时钟输出*/ \
RCC_CFGR &= ~(0x7 《《 24); \
}while (0)
#define OV7725_XCLK_ENABLE() \
do{ \
/*MCO 将HSE时钟输出*/ \
RCC_CFGR &= ~(0x7 《《 24); \
RCC_CFGR |= (0x7 《《 24); \
}while (0)
#define OV7725_XCLK_DISABLE() \
do{ \
/*MCO 将HSE时钟输出*/ \
RCC_CFGR &= ~(0x7 《《 24); \
}while (0)
/*使能OV7725 IO中断*/
#define OV7725_CPU_IO_INT_ENABLE() \
do{ \
SETENA1 |= (1 《《 8); \
EXTI_IMR |= (1 《《 12); \
EXTI_FTSR |= (1 《《 12); \
}while (0)
/*禁用OV7725 IO中断*/
#define OV7725_CPU_IO_INT_DISABLE() \
do{ \
CLRENA1 |= (1 《《 8); \
EXTI_IMR &= ~(1 《《 12); \
EXTI_FTSR &= ~(1 《《 12); \
}while (0)
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部2条评论
快来发表一下你的评论吧 !