stm32f103 IIC控制器 卡在while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_MODE_SELECT));

在使用STM32F103的硬件IIC控制器配合rt-thread1.1.0操作24LC02时,遇到程序卡在I2C_EVENT_MASTER_MODE_SELECT检查上的问题。解决方法包括:启用I2C_BITOPS和I2C_BIT_DEBUG宏,增加外接上拉电阻,调整延时,并在每次读取前重新初始化IIC。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用stm32f103+rt-thread1.1.0

使用硬件IIC控制器

应该是官方的i2c_ee代码 读取24LC02的

不挂总线直接测试的时候会卡死在

while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_MODE_SELECT));这句话上

挂上总线,将I2C1的PB6 PB7外接上拉电阻拉高之后,打开

#define RT_USING_I2C_BITOPS
#define RT_I2C_BIT_DEBUG
就能通过了……,这个还需要仔细研究

然后就是延时的事情了,太快了也不好使

尤其是read的时候,加点rt_kprintf语句反而好使了

 

IIC初始化的时候要注意需要下面的代码

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
  I2C_InitTypeDef  I2C_InitStructure; 
  GPIO_InitTypeDef  GPIO_InitStructure; 

  /* Configure I2C1 pins: SCL and SDA */
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_6 | GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;
  GPIO_Init(GPIOB, &GPIO_InitStructure);

  /* I2C configuration */
  I2C_InitStructure.I2C_Mode =
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值