Selaa lähdekoodia

Merge pull request #2499 from ylz0923/patch-1

[bsp][stm32][libraries][HAL_Drivers] Update drv_common.c
Bernard Xiong 6 vuotta sitten
vanhempi
commit
0f22a85eba
1 muutettua tiedostoa jossa 8 lisäystä ja 26 poistoa
  1. 8 26
      bsp/stm32/libraries/HAL_Drivers/drv_common.c

+ 8 - 26
bsp/stm32/libraries/HAL_Drivers/drv_common.c

@@ -93,32 +93,14 @@ void _Error_Handler(char *s, int num)
  */
 void rt_hw_us_delay(rt_uint32_t us)
 {
-    rt_uint32_t ticks;
-    rt_uint32_t told, tnow, tcnt = 0;
-    rt_uint32_t reload = SysTick->LOAD;
-
-    ticks = us * reload / (1000000 / RT_TICK_PER_SECOND);
-    told = SysTick->VAL;
-    while (1)
-    {
-        tnow = SysTick->VAL;
-        if (tnow != told)
-        {
-            if (tnow < told)
-            {
-                tcnt += told - tnow;
-            }
-            else
-            {
-                tcnt += reload - tnow + told;
-            }
-            told = tnow;
-            if (tcnt >= ticks)
-            {
-                break;
-            }
-        }
-    }
+    rt_uint32_t start, now, delta, reload, us_tick;
+    start = SysTick->VAL;
+    reload = SysTick->LOAD;
+    us_tick = SystemCoreClock / 1000000UL;
+    do {
+        now = SysTick->VAL;
+        delta = start > now ? start - now : reload + start - now;
+    } while(delta < us_tick * us);
 }
 
 /**