STM32视频教程

STM32硬件IIC-下

作者:陈广
日期:2023-05-9


视频播放地址

点击播放

main.c中的while(1)循环源码

while (1)
  {
	  //等待I2C总线空闲
	  while(LL_I2C_IsActiveFlag_BUSY(I2C2));
	  //使能I2C
	  LL_I2C_Enable(I2C2);
	  //发送开始信号
	  LL_I2C_GenerateStartCondition(I2C2);
	  while(!LL_I2C_IsActiveFlag_SB(I2C2));
	  //寻址操作
	  LL_I2C_TransmitData8(I2C2, 0x91);
	  while(!LL_I2C_IsActiveFlag_ADDR(I2C2));
	  LL_I2C_ClearFlag_ADDR(I2C2);
	  //读取接收到的第一个字节
	  LL_I2C_AcknowledgeNextData(I2C2, LL_I2C_ACK);
	  while(!LL_I2C_IsActiveFlag_RXNE(I2C2));
	  uint8_t data = LL_I2C_ReceiveData8(I2C2);
	  //读取接收到的第二个字节
	  LL_I2C_AcknowledgeNextData(I2C2, LL_I2C_NACK);
	  //发送停止信号
	  LL_I2C_GenerateStopCondition(I2C2);
	  while(!LL_I2C_IsActiveFlag_RXNE(I2C2));
	  data = LL_I2C_ReceiveData8(I2C2);

	  //关闭I2c
	  LL_I2C_Disable(I2C2);
	  LL_mDelay(1000);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
;

© 2018 - IOT小分队文章发布系统 v0.3