在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            STM32模擬 IIC

            作者: 時(shí)間:2012-09-10 來(lái)源:網(wǎng)絡(luò) 收藏

            #ifndef __AT24C02_H__

            本文引用地址:http://www.biyoush.com/article/148435.htm

            #define __AT24C02_H__

            #includestm32f10x.h

            void iicinit(void);

            void iicwrite(u8 add,u8 Achar);

            u8 iicread(u8 add);

            #endif

            #includestm32f10x.h

            #includeat24c02.h

            void iicstart(void);

            void iicstop(void);

            void ack(void);

            void iicwritebyte(u8 a);

            u8 iicreadbyte(void);

            void iicwrite(u8 add,u8 Achar);

            u8 iicread(u8 add);

            void iicinit(void);

            /////////////////////////////

            void delay5us(void)//ums

            {

            unsigned short i, j;

            unsigned short time;

            time=5;

            for(; time > 0; time--){

            for(j = 0; j 5; j++){

            for(i = 0; i 1; i++);

            }

            }

            }

            void delayms(unsigned short time)//nms

            {

            unsigned short i, j;

            for(; time > 0; time--){

            for(j = 0; j 10; j++){

            for(i = 0; i 1004; i++);

            }

            }

            }

            void iicinit(void)

            {

            GPIO_InitTypeDef GPIO_InitStructure;

            RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

            GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;

            GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;

            GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;

            GPIO_Init(GPIOB, GPIO_InitStructure);

            }

            void iicstart(void)

            {

            GPIO_SetBits(GPIOB,GPIO_Pin_7); //sda=1;

            delay5us();

            GPIO_SetBits(GPIOB,GPIO_Pin_6); //scl=1;

            delay5us();

            GPIO_ResetBits(GPIOB,GPIO_Pin_7); //sda=0;

            delay5us();

            }

            void iicstop(void)

            {

            GPIO_ResetBits(GPIOB,GPIO_Pin_7); //sda=0;

            delay5us();

            GPIO_SetBits(GPIOB,GPIO_Pin_6); //scl=1;

            delay5us();

            GPIO_SetBits(GPIOB,GPIO_Pin_7); //sda=1;

            delay5us();

            }

            void ack(void)

            {

            u16 i;

            GPIO_SetBits(GPIOB,GPIO_Pin_6);//scl=1;

            delay5us();

            while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7)(i0x2b0)) {i++;}

            GPIO_ResetBits(GPIOB,GPIO_Pin_6);//scl=0;

            delay5us();

            }

            void iicwritebyte(u8 a)

            {

            u16 i;

            GPIO_ResetBits(GPIOB,GPIO_Pin_6); //scl=0;

            delay5us();

            for(i=0;i8;i++)

            {

            if(a0x80)

            GPIO_SetBits(GPIOB,GPIO_Pin_7);//sda=1;

            else

            GPIO_ResetBits(GPIOB,GPIO_Pin_7);;

            a=a1;

            GPIO_SetBits(GPIOB,GPIO_Pin_6);//scl=1;

            delay5us();

            GPIO_ResetBits(GPIOB,GPIO_Pin_6);//scl=0;

            delay5us();

            }

            GPIO_SetBits(GPIOB,GPIO_Pin_7);//sda=1;

            delay5us();

            }

            u8 iicreadbyte()

            {

            u8 i,temp;

            temp=0;

            GPIO_SetBits(GPIOB,GPIO_Pin_7);//sda=1;

            delay5us();

            GPIO_ResetBits(GPIOB,GPIO_Pin_6); //scl=0;

            delay5us();

            for(i=0;i8;i++)

            {

            GPIO_SetBits(GPIOB,GPIO_Pin_6); //scl=1;

            delay5us();

            delay5us();

            temp=(temp1)|GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7);

            delay5us();

            GPIO_ResetBits(GPIOB,GPIO_Pin_6); //scl=0;

            delay5us();

            }

            GPIO_SetBits(GPIOB,GPIO_Pin_7);//sda=1;

            delay5us();

            GPIO_ResetBits(GPIOB,GPIO_Pin_6);//scl=0;

            delay5us();

            return temp;

            }

            void iicwrite(u8 add,u8 Achar)

            {

            iicstart();

            iicwritebyte(0xa0);

            ack();

            iicwritebyte(add);

            ack();

            iicwritebyte(Achar);

            ack();

            iicstop();

            delayms(20);

            }

            u8 iicread(u8 add)

            {

            u8 temp;

            iicstart();

            iicwritebyte(0xa0);

            ack();

            iicwritebyte(add);

            ack();

            iicstart();

            iicwritebyte(0xa1);

            ack();

            temp=iicreadbyte();

            ack();

            iicstop();

            return temp;

            }



            關(guān)鍵詞: IIC 模擬 STM32

            評(píng)論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉