-- rt-thread的精准延时函数us---//
void rt_hw_us_delay(rt_uint32_t us)
{
rt_uint32_t delta;
/* 获 得 当 前 时 间 */
delta = SysTick->VAL;
/* 循 环 获 得 当 前 时 间, 直 到 达 到 指 定 的 时 间 后 退 出 循 环 */
while (delta - SysTick->VAL< us);
}
-- rt-thread的精准延时函数ns---//
void rt_hw_ns_delay(rt_uint32_t ns)
{
rt_uint32_t delta;
/* 获 得 延 时 经 过 的 tick 数 */
ns = ns * (SysTick->LOAD/(1000000000/RT_TICK_PER_SECOND));
/* 获 得 当 前 时 间 */
delta = SysTick->VAL;
/* 循 环 获 得 当 前 时 间, 直 到 达 到 指 定 的 时 间 后 退 出 循 环 */
while (delta - SysTick->VAL< ns);
}