首页 > 解决方案 > 如何获取设备地址?

问题描述

我想用 i2c 阅读触摸屏。但是当我调试这段代码时,while (I2C_GetFlagStatus(I2C1, I2C_ISR_TXIS) == RESET) 行不能工作。我该如何解决?请帮助我

void EXTI1_IRQHandler(void)
    {
      if (EXTI_GetITStatus((EXTI_Line1) != RESET))
      {

        res = touch_i2c_read(0x3C, 0x00, i2c_buffer, 22);
        //  printf("deneme");
        if (!res)
        {
        }

        else
        {
        }
        EXTI_ClearITPendingBit(EXTI_Line0);
      }
    }    



static uint32_t touch_i2c_read(uint8_t DeviceAddr, uint8_t RegAddr, uint8_t *pBuffer, uint16_t len)
    { //uint8_t deviceaddr ,0x00,(uint8_t *)&buf, sizeof(buf)
      uint32_t timeout = I2C_TIMEOUT;
      while (I2C_GetFlagStatus(I2C1, I2C_ISR_BUSY) != RESET)
      {
        if ((timeout--) == 0)
          return 0;
      }

      I2C_TransferHandling(I2C1, DeviceAddr << 1, 1, I2C_SoftEnd_Mode, I2C_Generate_Start_Write);
      /* !(!! Wait until TXIS flag is set !!! */
      timeout = I2C_TIMEOUT;

      while (I2C_GetFlagStatus(I2C1, I2C_ISR_TXIS) == RESET)
      {

        if ((timeout--) == 0)
          return 0;
      }
      GPIO_SetBits(DEBUG_LED_PORT, DEBUG_LED_PIN);
    }

标签: i2c

解决方案


推荐阅读