OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9249|回复: 4

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

[复制链接]

10

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2013-12-5
在线时间
0 小时
发表于 2014-3-11 20:39:23 | 显示全部楼层 |阅读模式
为什么将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;
}








正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

39

主题

2026

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2020
金钱
2020
注册时间
2013-5-1
在线时间
87 小时
发表于 2014-3-11 21:23:38 | 显示全部楼层
你用的是硬件的?初始化可能就没起来吧...
博观而约取,厚积而薄发。
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-3-12 08:40:39 | 显示全部楼层
回复【2楼】745021926:
---------------------------------
我上次在103上用库函数提供的硬件IIC写了个,刚开始还可以,后面来多两次就不行了,哎
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

10

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2013-12-5
在线时间
0 小时
 楼主| 发表于 2014-3-21 15:01:11 | 显示全部楼层
回复【3楼】Badu_Space:
---------------------------------
已经解决的,在初始化函数时,使i2c总线处于忙了!所以后面调用,一直死循环着
回复 支持 反对

使用道具 举报

10

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2013-12-5
在线时间
0 小时
 楼主| 发表于 2014-3-21 15:01:40 | 显示全部楼层
回复【2楼】745021926:
---------------------------------
恩恩,是,开始的初始化没有弄对!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 18:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表