IIC实验求指教

2019-08-14 19:15发布

原子哥IIC实验用的是PB10、PB11,我改用为PB6、PB7。修改前后的程序如下,可是最后检测不到AT24C02的存在,是不是还需要修改其它地方,请大神指点!小民万分感激!

/*
//IO方向设置
#define SDA_IN()  {GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=8<<12;}
#define SDA_OUT() {GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=3<<12;}

//IO操作函数     
#define IIC_SCL    PBout(10) //SCL
#define IIC_SDA    PBout(11) //SDA     
#define READ_SDA   PBin(11)  //输入SDA
*/
///*
//IO方向设置
#define SDA_IN()  {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=8<<8;}
#define SDA_OUT() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=3<<8;}

//IO操作函数     
#define IIC_SCL    PBout(6) //SCL
#define IIC_SDA    PBout(7) //SDA     
#define READ_SDA   PBin(7)  //输入SDA
//*/

//初始化IIC
void IIC_Init(void)
{    /*                     
    GPIO_InitTypeDef GPIO_InitStructure;
    RCC_APB2PeriphClockCmd(    RCC_APB2Periph_GPIOB, ENABLE );    
      
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_11;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;   //推挽输出
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &GPIO_InitStructure);
    GPIO_SetBits(GPIOB,GPIO_Pin_10|GPIO_Pin_11);    //PB10,PB11 输出高
    */
    ///*
    GPIO_InitTypeDef GPIO_InitStructure;
    RCC_APB2PeriphClockCmd(    RCC_APB2Periph_GPIOB, ENABLE );    
      
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;   //推挽输出
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &GPIO_InitStructure);
    GPIO_SetBits(GPIOB,GPIO_Pin_6|GPIO_Pin_7);    //PB6,PB7 输出高
    //*/
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
27条回答
冻结的鱼
1楼-- · 2019-08-18 00:58
Hedy 发表于 2017-5-10 19:11
#define SDA_IN()  {GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=8CRH|=3

只有数据引脚才要设置方向,时钟引脚不需要。
冻结的鱼
2楼-- · 2019-08-18 04:46
 精彩回答 2  元偷偷看……
Ben520
3楼-- · 2019-08-18 09:44
楼主可以用了吗?我按照上面的改了还是出不来6050的数据

一周热门 更多>