From 699bb320735a5fc0d26b196ef75b5387ffa28226 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E8=BF=9E=E9=92=8A?= Date: Mon, 11 Jun 2018 08:59:30 +0800 Subject: [PATCH] [stm32f10x-HAL] add function rt_hw_us_delay MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 实现rt_hw_us_delay函数 --- bsp/stm32f10x-HAL/drivers/board.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/bsp/stm32f10x-HAL/drivers/board.c b/bsp/stm32f10x-HAL/drivers/board.c index 12d5b7d80f..61029214c1 100644 --- a/bsp/stm32f10x-HAL/drivers/board.c +++ b/bsp/stm32f10x-HAL/drivers/board.c @@ -113,3 +113,23 @@ void rt_hw_board_init(void) rt_console_set_device(RT_CONSOLE_DEVICE_NAME); #endif } + +/** + * This function will delay for some us. + * + * @param us the delay time of us + */ +void rt_hw_us_delay(rt_uint32_t us) +{ + rt_uint32_t delta; + us = us * (SysTick->LOAD / (1000000 / RT_TICK_PER_SECOND)); + delta = SysTick->VAL; + if (delta < us) + { + /* wait current OSTick left time gone */ + while (SysTick->VAL < us); + us -= delta; + delta = SysTick->LOAD; + } + while (delta - SysTick->VAL < us); +}