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-16 08:22
回复【13楼】化功大法:
---------------------------------
改过了应该是这样
#define SDA_IN()  {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)8<<28;} 
#define SDA_OUT() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)3<<28;}
yuyasky
2楼-- · 2019-08-16 09:00
楼主问题解决了吗
yuyasky
3楼-- · 2019-08-16 12:12
急求楼主指导啊
图灵信念
4楼-- · 2019-08-16 17:20
 精彩回答 2  元偷偷看……
正点原子
5楼-- · 2019-08-16 19:07
回复【17楼】图灵信念:
---------------------------------
每个IO模式配置占用4个位,第7个IO,那不是<<4*7么?
stm32你是我的菜噢
6楼-- · 2019-08-16 22:48
#define SDA_IN()  {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)8<<28;}  
#define SDA_OUT() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)3<<28;}
请教一下这两句话的具体含义是什么呢?菜鸟不懂,谢谢指教

一周热门 更多>