////////////////////////////////////////////////////////////
/*
#define SETSCL() (PAout(4) = 1)
#define CLRSCL() (PAout(4) = 0)
#define SETSDA() (PAout(5) = 1)
#define CLRSDA() (PAout(5) = 0)
#define CHECKSDA() (PAin(6))
*/
#define SETSCL() (GPIO_SetBits(GPIOA, GPIO_Pin_4))
#define CLRSCL() (GPIO_ResetBits(GPIOA, GPIO_Pin_4))
//#define CHECKSCL() (GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_4))
#define SETSDA() (GPIO_SetBits(GPIOA, GPIO_Pin_5))
#define CLRSDA() (GPIO_ResetBits(GPIOA, GPIO_Pin_5))
//#define CHECKSDA() (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_6))
void Delay10us(unsigned int dly)
{
while(dly--);
{
}
}
void IICStart(void)
{
uint8 i;
for(i = 0; i < 2; i++)
Delay10us(100);
SETSDA();
//i = 100;
//while(i--);
SETSCL();
//i = 100;
//while(i--);
CLRSDA();
//Delay10us(5);
CLRSCL();
//Delay10us(5);
}
void GPIOInit(void)
{
RCC->APB2ENR|=BIT2; //port A clock enable
//iic gpio
GPIOA->CRL &= 0XFF00FFFF;
GPIOA->CRL|=0X00330000;
GPIOA->ODR|=(BIT4 | BIT5);
GPIOA->CRL &= 0XF0FFFFFF;
GPIOA->CRL|=0X08000000;
RCC->APB2ENR|=1<<5; //port D clock enable
GPIOD->CRH &= 0XFFFFF00F;
GPIOD->CRH|=0X00000330;
GPIOD->ODR|=1<<5;
RCC->APB2ENR|=1<<6; //port E clock enable
GPIOE->CRH &= 0XFFFF0F0F;
GPIOE->CRH|=0X00003030;
}
int main(void)
{
u8 t=0;
GPIO_InitTypeDef GPIO_InitStructure;
//NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//ÉèÖÃÖжÏÓÅÏȼ¶·Ö×éΪ×é2£º2λÇÀÕ¼ÓÅÏȼ¶£¬2λÏìÓ¦ÓÅÏȼ¶
//delay_init(); //ÑÓʱº¯Êý³õʼ»¯
//uart_init(115200); //´®¿Ú³õʼ»¯Îª115200
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE|RCC_APB2Periph_GPIOA, ENABLE); //ʹÄÜPB,PA,PE¶Ë¿ÚʱÖÓ
/*
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //LED0-->PE.9 ¶Ë¿ÚÅäÖÃ
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //ÍÆÍìÊä³ö
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO¿ÚËÙ¶ÈΪ50MHz
GPIO_Init(GPIOE, &GPIO_InitStructure); //¸ù¾ÝÉ趨²ÎÊý³õʼ»¯GPIOB.5
GPIO_SetBits(GPIOE,GPIO_Pin_9); //PB.5 Êä³ö¸ß
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; //LED1-->PE.5 ¶Ë¿ÚÅäÖÃ, ÍÆÍìÊä³ö
GPIO_Init(GPIOE, &GPIO_InitStructure); //ÍÆÍìÊä³ö £¬IO¿ÚËÙ¶ÈΪ50MHz
GPIO_SetBits(GPIOE,GPIO_Pin_11); //PE.5 Êä³ö¸ß
*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //ÍÆÍìÊä³ö
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO¿ÚËÙ¶ÈΪ50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure); //¸ù¾ÝÉ趨²ÎÊý³õʼ»¯GPIOA.4
GPIO_SetBits(GPIOA,GPIO_Pin_4); //PA.4 Êä³ö¸ß
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //PA.5 ¶Ë¿ÚÅäÖÃ
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //ÍÆÍìÊä³ö
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO¿ÚËÙ¶ÈΪ50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure); //¸ù¾ÝÉ趨²ÎÊý³õʼ»¯GPIOB.5
GPIO_SetBits(GPIOA,GPIO_Pin_5); //PA.5 Êä³ö¸ß
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; //PA.6 ¶Ë¿ÚÅäÖÃ,
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //ÍÆÍìÊä³ö
GPIO_Init(GPIOA, &GPIO_InitStructure); //ÍÆÍìÊä³ö £¬IO¿ÚËÙ¶ÈΪ50MHz
GPIO_SetBits(GPIOA,GPIO_Pin_6); //PA.6Êä³ö¸ß
IICStart();
IICStart(); // collapse at here... ??????????????????????????????????
while(1)
{
//IICStart();
}
}
|