1000毫秒等于多少秒(毫秒和秒的换算)

1000毫秒等于多少秒(毫秒和秒的换算)

​​​​​​​​​​​​​​​​​此账号为华为云开发者社区官方运营账号,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态

WWw.kemAOWaNG。oRG。cN

本文分享自华为云社区《鸿蒙轻内核M核源码分析系列六 时间管理》,原文作者:zhushy 。

本文会继续分析 Tick 和时间相关的源码,给读者介绍鸿蒙轻内核的时间管理模块。本文中所涉及的源码,以 OpenHarmony LiteOS-M 内核为例,均可以在开源站点https://gitee.com/openharmony/kernel_liteos_m 获取。

时间管理模块以系统时钟为基础,可以分为 2 部分,一部分是 SysTick 中断,为任务调度提供必要的时钟节拍;另外一部分是,给应用程序提供所有和时间有关的服务,如时间转换、统计功能。

系统时钟是由定时器/计数器产生的输出脉冲触发中断产生的,一般定义为整数或长整数。输出脉冲的周期叫做一个“时钟滴答”,也称为时标或者 Tick。Tick 是操作系统的基本时间单位,由用户配置的每秒 Tick 数决定。如果用户配置每秒的 Tick 数目为 1000,则 1 个 Tick 等于 1ms 的时长。另外一个计时单位是 Cycle,这是系统最小的计时单位。Cycle 的时长由系统主时钟频率决定,系统主时钟频率就是每秒钟的 Cycle 数,对于 216 MHz 的 CPU,1 秒产生 216000000 个 cycles。

用户以秒、毫秒为单位计时,而操作系统以 Tick 为单位计时,当用户需要对系统进行操作时,例如任务挂起、延时等,此时可以使用时间管理模块对 Tick 和秒/毫秒进行转换。

下面,我们剖析下时间管理模块的源代码,若涉及开发板部分,以开发板工程 targetscortex-m7_nucleo_f767zi_gcc为例进行源码分析。

1、时间管理初始化和启动

我们先看下时间管理模块的相关配置,然后再剖析如何初始化,如何启动。

1.1 时间管理相关的配置

时间管理模块涉及 3 个配置项,系统时钟 OS_SYS_CLOCK、每秒 Tick 数目 LOSCFG_BASE_CORE_TICK_PER_SECOND 两个配置选项,还有宏 LOSCFG_BASE_CORE_TICK_HW_TIME。LOSCFG_BASE_CORE_TICK_HW_TIME 默认关闭,开启时,需要提供定制函数 VOID platform_tick_handler(VOID),在 Tick 中断处理函数中执行定制操作。这些配置项在模板开发板工程目录的文件 target_config.h 中定义,如文件 targetscortex-m7_nucleo_f767zi_gcctarget_config.h 中定义如下:

#define OS_SYS_CLOCK                                        96000000
#define LOSCFG_BASE_CORE_TICK_PER_SECOND                    (1000UL)
#define LOSCFG_BASE_CORE_TICK_HW_TIME                       0

1.2 时间管理初始化和启动
WWw.kemAOWaNG。oRG。cN

函数 INT32 main(VOID)会调用 kernelsrclos_init.c 中的函数 UINT32 LOS_Start(VOID)启动系统,该函数会调用启动调度函数 UINT32 HalStartSchedule(OS_TICK_HANDLER handler)。源码如下:

LITE_OS_SEC_TEXT_INIT UINT32 LOS_Start(VOID)
{
    return HalStartSchedule(OsTickHandler);
}

​函数 UINT32 HalTickStart(OS_TICK_HANDLER *handler)定义在 kernelarcharmcortex-m7gcclos_context.c,源码如下。其中函数参数为 Tick 中断处理函数 OsTickHandler(),后文会分析该 tick 中断处理函数。⑴处代码继续调用函数进一步调用函数 HalTickStart(handler)来设置 Tick 中断启动。⑵处会调用汇编函数 HalStartToRun 开始运行系统,后续任务调度系列再详细分析该汇编函数。

LITE_OS_SEC_TEXT_INIT UINT32 HalStartSchedule(OS_TICK_HANDLER handler)
{
    UINT32 ret;
⑴  ret = HalTickStart(handler);
    if (ret != LOS_OK) {
        return ret;
    }
⑵  HalStartToRun();
    return LOS_OK; /* never return */
}

函数 HalTickStart(handler)定义在文件 kernelarcharmcortex-m7gcclos_timer.c,源码如下,我们分析下函数的代码实现。⑴处校验下时间管理模块的配置项的合法性。在开启宏 LOSCFG_USE_SYSTEM_DEFINED_INTERRUPT 时,会使用系统定义的中断。会执行⑵处的代码,调用定义在文件 kernelarcharmcortex-m7gcclos_interrupt.c 中的函数 OsSetVector()设置中断向量,该函数在中断系列会详细分析。⑶处设置全局变量 g_sysClock 为系统时钟,g_cyclesPerTick 为每 tick 对应的 cycle 数目,g_ullTickCount 初始化为 0,表示系统 tick 中断发生次数。⑷处调用定义在 targetscortex-m7_nucleo_f767zi_gccDriversCMSISIncludecore_cm7.h 文件中的内联函数 uint32_t SysTick_Config(uint32_t ticks),初始化、启动系统定时器 Systick 和中断。

WEAK UINT32 HalTickStart(OS_TICK_HANDLER *handler)
{
    UINT32 ret;


⑴  if ((OS_SYS_CLOCK == 0) ||
        (LOSCFG_BASE_CORE_TICK_PER_SECOND == 0) ||
        (LOSCFG_BASE_CORE_TICK_PER_SECOND WWw.kemAOWaNG。oRG。cN

.QIX43 { display:none; }

秒鲨号所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈!本站将在三个工作日内改正。
(0)

大家都在看

  • 基金年收益率一般多少(基金年收益率多少算好的)

    基金也有好坏之分,即便是同类型的基金,收益的差别也有可能会很大。比如同样是股票基金,有的基金一年亏40%—50%时,有的基金一年却能盈利60%—70%。那么,一只好基金,一年的收益…

    2022年5月20日
  • stm32固件库手册在哪(stm32基于固件库的建立)

    01 万物溯源,一切改变由此发生 在STM32之前,都是老大头51,带着它的“小弟们” MSP430、AVR、PIC在单片机界呼风唤雨。 那个时候,市场上遍布8位机,大学教材用51…

    2022年1月14日 投稿
  • 怎么用字符串生成二维码(二维码制作小程序)

    生产企业或者物流快递需要用到大量的二维码和条形码,但是要自行编写代码批量生成二维码或者条形码并不容易,涉及的知识面很广。 Excel插件《E灵》提供了二维码接口和条形码接口,您只需…

    2022年3月4日
  • 直播赶场,焕新千年古老集市

    市井长巷,聚拢来是烟火,摊开来是人间。如果每个村镇集市都能涌现出“赶集直播”,更多乡镇集市人头攒动、车水马龙,更多人乡愁被唤醒,更多带着故乡味道农产品的“出圈”,也就成为必然。 作…

    2022年6月25日 投稿
  • 腊八蒜怎么腌制又绿又好吃(九州醉餐饮网)

    马上就到腊八节了,自然少不了腌制腊八蒜的环节,对于北方人来说,腊八节很隆重,在我们这就有“小孩小孩你别馋,过了腊八就是年”的说法,腊八节就像一层“幕布”,过了腊八,也就拉开了春节的…

    2022年6月18日 投稿
  • 大卡司加盟费一般多少钱(大卡司加盟费一般多少钱)

    韩式翻拍剧一直屡败屡战,以至于为了出一部爆款翻拍剧,作品往往邀请顶级卡司加盟,今天分享的几部剧作同样如此。 但是翻拍魔咒鲜有被打破,归根到底还是水土不服,仅靠顶配演员的大尺度献身尽…

    2022年6月12日 投稿
  • word文档密码怎么破(暴力破解word加密文件)

    有时,我们分享给朋友Word文档,但又不希望他们乱改,该怎么办呢?其实,你可以为文档加一个密码保护哦!今天我就教大家一招,限制文档编辑与复制,快来学一下吧! 1.、首先,打开Wor…

    2022年1月12日 投稿
  • 中国纳税标准是多少(中国工资税收标准表)

    作为纳税人,最关注的无疑是法定扣税标准。去年年底新个税法重新规定了工资扣税的标准。扣税工资基数从5000元开始。下面跟大律师网小编一起具体去学习关于2019年工资扣税最新标准吧。 …

    2022年5月19日
  • mats软件使用教程(mats在DOS下指令)

    一、导读2019年9月11日,ANSYS公司公开宣称:“收购LSTC公司,一举获得其旗下拥有LS-DYNA(结构&流体&电磁的多物理场求解器)、LS-PrePost…

    2022年2月24日 投稿
  • 起亚suv(东风悦达起亚suv新款)

    当下国内市场的SUV火热,很多不同品类车型,干脆换装成为SUV,起亚佳乐是一款非常经典的车型,在国内市场停产停售多年,当下全新的2023款车型亮相,摇身一变成为了SUV,定位在紧凑…

    2022年4月4日 投稿
品牌推广 在线咨询
返回顶部