STM8S硬件IIC卡在判忙,注意事项

1.具体的代码我就不贴了,21IC有很多示例,放到自己的工程死都不通。后面放弃,改用模拟IIC。今天又尝试半天,居然通了,特意发文章纪念,且帮助有同样困惑的人。
2.下面是关键,下面这样设置IO可正常使用硬件IIC

GPIO_Init(GPIOB, GPIO_PIN_4, GPIO_MODE_OUT_OD_HIZ_SLOW);	//IIC,OD outPut
GPIO_Init(GPIOB, GPIO_PIN_5, GPIO_MODE_OUT_OD_HIZ_SLOW);	//IIC,OD outPut
//或者
GPIO_Init(GPIOB, GPIO_PIN_4, GPIO_MODE_OUT_OD_HIZ_FAST);	//IIC,OD outPut
GPIO_Init(GPIOB, GPIO_PIN_5, GPIO_MODE_OUT_OD_HIZ_FAST);	//IIC,OD outPut

下面这样设置IO不能正常使用硬件IIC

GPIO_Init(GPIOB, GPIO_PIN_4, GPIO_MODE_OUT_OD_LOW_SLOW);	//IIC,OD outPut
GPIO_Init(GPIOB, GPIO_PIN_5, GPIO_MODE_OUT_OD_LOW_SLOW);	//IIC,OD outPut
//或者
GPIO_Init(GPIOB, GPIO_PIN_4, GPIO_MODE_OUT_OD_LOW_FAST);	//IIC,OD outPut
GPIO_Init(GPIOB, GPIO_PIN_5, GPIO_MODE_OUT_OD_LOW_FAST);	//IIC,OD outPut

关键在于不能把IIC口设置成输出低电平,不然总是卡在判忙。这里不容易发现问题是因为,先初始化IO的时候是输出的低电平,然后初始化IIC的时候,这里就被IIC硬件使用了外部上拉变成了高电平,你以为IO口是正常了,其实在判忙这通不过。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: STM32F103IIC是一款由意法半导体(STMicroelectronics)推出的具有I2C接口的32位ARM微控制器。当需要对STM32F103IIC进行复位时,可以按照以下步骤进行操作: 1. 确保I2C总线和其他外部设备已经断开连接,避免因外部干扰导致复位失败。 2. 在STM32F103IIC的复位引脚(RST)上施加低电平信号,一般可通过按下复位按钮或者外部控制电路来实现。确保该信号持续足够时间以确保复位的有效性(一般建议持续5毫秒以上)。 3. 解除复位引脚上的低电平信号,使其回复正常工作状态。 4. 等待一段时间,通常为几个毫秒,以确保芯片内部电路充分复位完成。 5. 在复位完成后,重新连接I2C总线和其他外部设备,以便正常进行通信或其他操作。 需要注意的是,如果复位时没有对芯片的电源进行控制,建议在复位之前将电源关闭,以避免进行错误的操作导致芯片损坏。 以上就是在使用STM32F103IIC进行复位时的基本操作步骤。具体的步骤可能会因具体的应用场景和硬件设计而有所不同,需要根据实际情况进行调整。同时,也可以参考STM32F103IIC的技术文档和用户手册来获取更详细和准确的复位操作指导。 ### 回答2: stm32f103iic芯片的复位是一种将芯片恢复到初始状态的操作。在使用stm32f103iic芯片时,可能会遇到各种问题,如系统崩溃、死循环等,此时可以通过复位来重新启动芯片并解决问题。 stm32f103iic芯片的复位有两种方式:软复位和硬复位。 软复位是通过软件编程来实现的,可以通过设置寄存器中的特定位来触发复位。软复位可以主动控制复位的时机和范围,灵活性较高。通过软复位,可以重置中央处理器核心、外设和存储器,并清除所有的寄存器值。 硬复位是通过外部电路或者特定的引脚来触发的,当电路中的复位引脚被拉低时,芯片会进入复位状态。硬复位一般无法控制复位时机和范围,但是可以在系统发生严重错误时,通过硬复位来强制重启芯片。 无论是软复位还是硬复位,都能够将芯片恢复到初始状态,重新启动系统。但是需要注意的是,在进行复位操作之前,应该保存重要的数据和状态,以防丢失。 总之,stm32f103iic芯片的复位是一种重要的功能,能够帮助解决系统中的问题,确保系统正常运行。 ### 回答3: 当STM32F103IIC芯片遇到复位条件时,系统将会进行复位操作。复位操作可以采用软件复位或硬件复位两种方式。 软件复位是通过执行软件指令将芯片进行复位。在软件中,我们可以将相应的寄存器设置为特定的值,来触发软件复位。通过软件复位,可以对特定的模块或寄存器进行复位操作,而不需要影响整个芯片。 硬件复位是通过外部信号或特定的电路进行复位。例如,我们可以通过将RESET引脚拉低来触发硬件复位。在硬件复位时,整个芯片的所有模块、寄存器和状态将会被重置为初始状态。 在STM32F103IIC芯片中,复位操作将使得所有的寄存器和模块回到默认状态。同时,复位将会清除各个模块的状态和配置。因此,在复位后,所有的寄存器和模块都将重新开始初始化。 需要注意的是,在进行复位操作之前,我们应该先保存在芯片中的重要数据。复位操作将会清除这些数据,因此在复位之前需要备份关键数据以免丢失。 总之,当STM32F103IIC芯片遇到复位条件时,系统将会进行复位操作。复位操作可以采用软件复位或硬件复位两种方式,复位将会重置整个芯片的状态和配置。在复位之前,需要备份关键数据以免丢失。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值