Your ROOT_URL in app.ini is https://bdgit.educoder.net/ but you are visiting http://bdgit.educoder.net/po4e85fi9/ruanjiangongcheng/commit/762f964222bb916ddac1da1ba413e041ab8ce53c?style=unified&whitespace=show-all
You should set ROOT_URL correctly, otherwise the web may not work correctly.
2 changed files with
60 additions and
3 deletions
@ -29,44 +29,76 @@
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE .
*/
/*
LOS_TickCountGet ( ) : 获 取 当 前 的 系 统 节 拍 数 。 通 过 调 用 OsGetCurrSchedTimeCycle ( ) 函 数 获 取 当 前 调 度 时 间 周 期 , 并 将 其 除 以 每 个 节 拍 的 周 期 数 , 得 到 节 拍 数 。
LOS_CyclePerTickGet ( ) : 获 取 每 个 节 拍 的 周 期 数 。 通 过 将 系 统 时 钟 频 率 除 以 每 秒 节 拍 数 , 得 到 每 个 节 拍 的 周 期 数 。
LOS_MS2Tick ( ) : 将 毫 秒 转 换 为 节 拍 数 。 将 给 定 的 毫 秒 数 乘 以 每 秒 节 拍 数 , 再 除 以 每 秒 毫 秒 数 , 得 到 节 拍 数 。
LOS_Tick2MS ( ) : 将 节 拍 数 转 换 为 毫 秒 。 将 给 定 的 节 拍 数 乘 以 每 秒 毫 秒 数 , 再 除 以 每 秒 节 拍 数 , 得 到 毫 秒 数 。
OsNS2Tick ( ) : 将 纳 秒 转 换 为 节 拍 数 。 首 先 计 算 每 个 节 拍 的 纳 秒 数 , 然 后 将 给 定 的 纳 秒 数 加 上 每 个 节 拍 的 纳 秒 数 减 1 , 再 除 以 每 个 节 拍 的 纳 秒 数 , 得 到 节 拍 数 。 如 果 节 拍 数 超 过 最 大 值 , 则 将 其 设 置 为 最 大 值 。
*/
# include "los_sys_pri.h"
# include "los_sched_pri.h"
// 定义最大值
# define OS_MAX_VALUE 0xFFFFFFFFUL
// 获取当前的系统节拍数
LITE_OS_SEC_TEXT_MINOR UINT64 LOS_TickCountGet ( VOID )
{
// 调用内部函数获取当前调度时间周期并除以每个节拍的周期数,得到节拍数
return OsGetCurrSchedTimeCycle ( ) / OS_CYCLE_PER_TICK ;
}
// 获取每个节拍的周期数
LITE_OS_SEC_TEXT_MINOR UINT32 LOS_CyclePerTickGet ( VOID )
{
// 返回系统时钟频率除以每秒节拍数,得到每个节拍的周期数
return g_sysClock / LOSCFG_BASE_CORE_TICK_PER_SECOND ;
}
// 将毫秒转换为节拍数
LITE_OS_SEC_TEXT_MINOR UINT32 LOS_MS2Tick ( UINT32 millisec )
{
// 如果毫秒数等于最大值,直接返回最大值
if ( millisec = = OS_MAX_VALUE ) {
return OS_MAX_VALUE ;
}
// 将毫秒数乘以每秒节拍数,再除以每秒毫秒数,得到节拍数
return ( ( UINT64 ) millisec * LOSCFG_BASE_CORE_TICK_PER_SECOND ) / OS_SYS_MS_PER_SECOND ;
}
// 将节拍数转换为毫秒
LITE_OS_SEC_TEXT_MINOR UINT32 LOS_Tick2MS ( UINT32 tick )
{
// 将节拍数乘以每秒毫秒数,再除以每秒节拍数,得到毫秒数
return ( ( UINT64 ) tick * OS_SYS_MS_PER_SECOND ) / LOSCFG_BASE_CORE_TICK_PER_SECOND ;
}
// 将纳秒转换为节拍数
LITE_OS_SEC_TEXT_MINOR UINT32 OsNS2Tick ( UINT64 nanoseconds )
{
// 每个节拍的纳秒数
const UINT32 nsPerTick = OS_SYS_NS_PER_SECOND / LOSCFG_BASE_CORE_TICK_PER_SECOND ;
// 将纳秒数加上每个节拍的纳秒数减1, 再除以每个节拍的纳秒数, 得到节拍数
UINT64 ticks = ( nanoseconds + nsPerTick - 1 ) / nsPerTick ;
// 如果节拍数超过最大值,将其设置为最大值
if ( ticks > OS_MAX_VALUE ) {
ticks = OS_MAX_VALUE ;
}
// 将节拍数转换为32位整数并返回
return ( UINT32 ) ticks ;
}
@ -29,6 +29,22 @@
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE .
*/
/*
函 数 意 义
g_sysClock : 系 统 时 钟 频 率 , 用 于 记 录 系 统 的 时 钟 频 率 。
g_tickPerSecond : 每 秒 节 拍 数 , 用 于 记 录 每 秒 钟 发 生 的 节 拍 数 。
g_cycle2NsScale : 循 环 周 期 到 纳 秒 的 缩 放 比 例 , 用 于 将 节 拍 周 期 转 换 为 纳 秒 。
g_tickSpin : 任 务 模 块 的 自 旋 锁 , 用 于 保 护 对 任 务 模 块 的 访 问 。
OsTickHandler ( ) : 节 拍 中 断 处 理 函 数 , 处 理 与 节 拍 相 关 的 操 作 。 在 函 数 内 部 , 可 能 会 进 行 一 些 特 定 平 台 的 操 作 , 如 调 试 记 录 数 据 、 更 新 虚 拟 动 态 共 享 对 象 ( VDSO ) 的 时 间 值 等 。 然 后 调 用 OsSchedTick ( ) 函 数 , 处 理 调 度 器 的 节 拍 操 作 。
*/
# include "los_tick_pri.h"
# include "los_swtmr_pri.h"
# include "los_sched_pri.h"
@ -36,17 +52,22 @@
# include "los_vdso.h"
# endif
// 系统时钟频率
LITE_OS_SEC_DATA_INIT UINT32 g_sysClock ;
// 每秒节拍数
LITE_OS_SEC_DATA_INIT UINT32 g_tickPerSecond ;
// 循环周期到纳秒的缩放比例
LITE_OS_SEC_BSS DOUBLE g_cycle2NsScale ;
/* spinlock for task module */
// 任务模块的自旋锁
LITE_OS_SEC_BSS SPIN_LOCK_INIT ( g_tickSpin ) ;
/*
* Description : Tick interruption handler
*/
// 节拍中断处理函数
LITE_OS_SEC_TEXT VOID OsTickHandler ( VOID )
{
# ifdef LOSCFG_SCHED_TICK_DEBUG
@ -61,6 +82,10 @@ LITE_OS_SEC_TEXT VOID OsTickHandler(VOID)
HalClockIrqClear ( ) ; /* diff from every platform */
# endif
// 调度器的节拍处理函数
OsSchedTick ( ) ;
}