stm32f407 配置i2c的问题!急求!!!

2019-07-21 05:08发布

为什么将f103上的i2c的函数移植到f407上面后,会死在里面?

因为没有f407关于i2c的固件库,用printf将每个while循环试了一遍!结果每个while循环都会死在里面!不知道是怎么回事啊!

急求大神帮忙!!!

一下是出问题的程序:


/******************************************************************************* * Function Name : I2C_WriteOneByte * Description   : 通过指定I2C接口写入一个字节数据 * Input         : - I2Cx:I2C寄存器基址 *                  - I2C_Addr:从器件地址 *                  - addr:预写入字节地址 *                  - value:写入数据 * Output         : None * Return         : 成功返回0 * Attention : None *******************************************************************************/ uint8_t I2C_WriteOneByte(I2C_TypeDef *I2Cx,uint8_t I2C_Addr,uint8_t addr,uint8_t value) {     /* 起始位 */ // I2C_AcknowledgePolling(I2Cx,I2C_Addr); while(I2C_GetFlagStatus(I2Cx, I2C_FLAG_BUSY));    这里死了   I2C_GenerateSTART(I2Cx, ENABLE); //   while(!I2C_CheckEvent(I2Cx, I2C_EVENT_MASTER_MODE_SELECT)); 这里死了   /* 发送器件地址(写)*/   I2C_Send7bitAddress(I2Cx, I2C_Addr, I2C_Direction_Transmitter);   while(!I2C_CheckEvent(I2Cx, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED))这里死了 { I2C_delay(100); }   /*发送地址*/   I2C_SendData(I2Cx, addr); while(!I2C_CheckEvent(I2Cx, I2C_EVENT_MASTER_BYTE_TRANSMITTED));这里死了
/* 写一个字节*/   I2C_SendData(I2Cx, value);    while(!I2C_CheckEvent(I2Cx, I2C_EVENT_MASTER_BYTE_TRANSMITTED)); 这里死了   /* 停止位*/   I2C_GenerateSTOP(I2Cx, ENABLE); I2C_AcknowledgePolling(I2Cx,I2C_Addr); I2C_delay(1000); return 0; }







友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
745021926
1楼-- · 2019-07-21 07:01
你用的是硬件的?初始化可能就没起来吧...
八度空间
2楼-- · 2019-07-21 07:42
回复【2楼】745021926:
---------------------------------
我上次在103上用库函数提供的硬件IIC写了个,刚开始还可以,后面来多两次就不行了,哎
雪雪爱贝贝
3楼-- · 2019-07-21 09:25
回复【3楼】Badu_Space:
---------------------------------
已经解决的,在初始化函数时,使i2c总线处于忙了!所以后面调用,一直死循环着
雪雪爱贝贝
4楼-- · 2019-07-21 15:23
 精彩回答 2  元偷偷看……

一周热门 更多>