Browse Source

Merge pull request #1877 from uestczyh222/f4_iic

[Bsp][stm32f4xx-hal]修复I2C在开启优化时出现延时异常的问题
Bernard Xiong 6 years ago
parent
commit
57303c14be
1 changed files with 5 additions and 4 deletions
  1. 5 4
      bsp/stm32f4xx-HAL/drivers/drv_i2c.c

+ 5 - 4
bsp/stm32f4xx-HAL/drivers/drv_i2c.c

@@ -78,11 +78,12 @@ static rt_int32_t  drv_get_scl(void *data)
 
 static void drv_udelay(rt_uint32_t us)
 {
-    int i = (HAL_RCC_GetHCLKFreq() / 4000000 * us);
-    while (i)
+    __IO uint32_t Delay = us * (SystemCoreClock / 8U / 1000000U);
+    do 
     {
-        i--;
-    }
+        __NOP();
+    } 
+    while (Delay --);
 }
 
 static const struct rt_i2c_bit_ops drv_bit_ops =