久芯网

IIC异常关闭中断,导致滴答定时器运行错误

avatar 772984087@qq.co 提问时间: 2023-07-08 16:22:17 / 未解决
```
static HAL_StatusTypeDef I2C_WaitOnFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, FlagStatus Status, uint32_t Timeout, uint32_t Tickstart)
{
  /* Wait until flag is set */
  while (__HAL_I2C_GET_FLAG(hi2c, Flag) == Status)
  {
    /* Check for the Timeout */
    if (Timeout != HAL_MAX_DELAY)
    {
      if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
      {
        hi2c->PreviousState     = I2C_STATE_NONE;
        hi2c->State             = HAL_I2C_STATE_READY;
        hi2c->Mode              = HAL_I2C_MODE_NONE;
        hi2c->ErrorCode         |= HAL_I2C_ERROR_TIMEOUT;

        /* Process Unlocked */
        __HAL_UNLOCK(hi2c);

        return HAL_ERROR;
      }
    }
  }
  return HAL_OK;
}
```
2个回答
  • avatar 772984087@qq.co
    回答时间: 2023-07-08 16:41:08

    `HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout)

  • avatar 废鱼
    回答时间: 2023-07-08 17:08:03

    我理解这里不会影响systick的运行,但是需要排除是否由于这个I2C的操作导致产生硬件错误中断后,进入错误中断,systick运行,或者I2C中断在一直运行,导致systick中断不运行。

会员中心 微信客服
客服
回到顶部