中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        STM32模擬 IIC

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

        #ifndef __AT24C02_H__

        本文引用地址:http://www.antipu.com.cn/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)閉