You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.2 KiB
52 lines
1.2 KiB
/*
|
|
* @ : Copyright (c) 2021 Phytium Information Technology, Inc.
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0.
|
|
*
|
|
* @Date: 2021-07-01 18:40:52
|
|
* @LastEditTime: 2021-08-17 11:34:21
|
|
* @Description: This files is for
|
|
*
|
|
* @Modify History:
|
|
* Ver Who Date Changes
|
|
* ----- ------ -------- --------------------------------------
|
|
* 1.0 Huanghe 2021/7/3 init
|
|
* 1.1 Zhugengyu 2021/8/3 unify a32 and a64 timer api
|
|
*/
|
|
|
|
#include "fsleep.h"
|
|
#include "generic_timer.h"
|
|
#include "kernel.h"
|
|
#include "parameters.h"
|
|
#include "ft_types.h"
|
|
|
|
static u32 fsleep_general(u32 ticks, u32 div)
|
|
{
|
|
u64 end_time;
|
|
u64 cur_time;
|
|
GenericTimerStart();
|
|
cur_time = GenericTimerRead();
|
|
end_time = cur_time + ((u64)ticks * GenericTimerFrequecy() / div);
|
|
|
|
do
|
|
{
|
|
cur_time = GenericTimerRead();
|
|
} while (cur_time < end_time);
|
|
|
|
return 0;
|
|
}
|
|
|
|
u32 fsleep_seconds(u32 seconds)
|
|
{
|
|
return fsleep_general(seconds, 1);
|
|
}
|
|
|
|
u32 fsleep_millisec(u32 mseconds)
|
|
{
|
|
return fsleep_general(mseconds, NANO_TO_MICRO);
|
|
}
|
|
|
|
u32 fsleep_microsec(u32 mseconds)
|
|
{
|
|
return fsleep_general(mseconds, NANO_TO_KILO);
|
|
}
|