diff options
| author | Bernard Xiong <[email protected]> | 2019-03-26 08:54:10 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2019-03-26 08:54:10 +0800 |
| commit | 0f22a85eba5af0b3d98678fcf11b01515f8a8e06 (patch) | |
| tree | 5197099d0ae0bd80e93b6ea072386462c9b6ef5e /bsp | |
| parent | b1a98ebe4621d6217da373078c34a4790fabe1c9 (diff) | |
| parent | b3cea3f5a8b7e9de50c5a6f79933077b11448f33 (diff) | |
Merge pull request #2499 from ylz0923/patch-1
[bsp][stm32][libraries][HAL_Drivers] Update drv_common.c
Diffstat (limited to 'bsp')
| -rw-r--r-- | bsp/stm32/libraries/HAL_Drivers/drv_common.c | 34 |
1 files changed, 8 insertions, 26 deletions
diff --git a/bsp/stm32/libraries/HAL_Drivers/drv_common.c b/bsp/stm32/libraries/HAL_Drivers/drv_common.c index 350c3fab40..9bffc026e4 100644 --- a/bsp/stm32/libraries/HAL_Drivers/drv_common.c +++ b/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); } /** |
