当前所在位置: 花生人 > 生活常识 > 1000毫秒等于多少秒(毫秒和秒的换算)

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

2023-01-23 花生人 【 字体:

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

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 01.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; }

阅读全文
本文标题:1000毫秒等于多少秒(毫秒和秒的换算) - 生活常识
本文地址:www.huashengren.com/article/20618.html

相关推荐

清蒸多宝鱼的做法

清蒸多宝鱼的做法
多宝鱼洗净,在腹部划3刀以便入味,腌制10分钟。||放入蒸锅中蒸制8分钟,夹出姜片和葱段,放上辣椒圈、葱丝。||锅中锅中放入适量油,放入蒸鱼豉油2勺、凉水1勺拌匀后浇在鱼身上即可。

吐鲁番早餐美食有哪些 吐鲁番早餐吃什么

吐鲁番早餐美食有哪些 吐鲁番早餐吃什么
吐鲁番早餐美食有烤包子,薄皮包子,馕,兰州拉面,拌面等等,吐鲁番早餐美食比较丰富,而且颇具地方特色,深受大众喜爱。

全麦南瓜马芬怎么做 全麦南瓜马芬的做法

全麦南瓜马芬怎么做 全麦南瓜马芬的做法
1、准备食材:南瓜泥70克、低筋面粉70克、全麦粉30克、牛奶70克、泡打粉1克、苏打粉1克、鸡蛋1个、黄油50克、细砂糖50克、盐1克。2、将软化的黄油倒入碗中,用搅拌器搅拌均匀。3、加入细砂糖和盐,搅拌均匀。4、将低筋面粉、泡打粉、苏打粉混合,过筛加入到碗中,搅拌均匀制成面糊。

澳门有哪些老字号 澳门老字号有哪些

澳门有哪些老字号 澳门老字号有哪些
澳门老字号包括龙华茶楼、陈胜记、南屏雅叙、明记牛杂、大龙凤茶楼和安德鲁饼店这六家店。

糯米酥虾的做法 糯米酥虾怎么做

糯米酥虾的做法 糯米酥虾怎么做
1、准备食材:基围虾300克、糯米150克、洋葱50克、葱5克、姜5克、精盐1匙、味精1匙、胡椒粉1匙、干辣椒粉1匙、酱油1匙、白糖1匙、黄酒1匙、鲜汤适量、色拉油适量。2、将葱切成葱花。3、姜切末。4、洋葱切末。5、将大虾劈开背部,挑除沙线。

鱼丸汤的做法

鱼丸汤的做法
1.鱼肉洗净剁成鱼蓉。将姜葱放入凉水中浸泡。2.鱼蓉中加入泡好的姜葱水、倒入料酒,鸡蛋清、淀粉拌匀。3.锅中放入适量水、姜丝煮开,将鱼蓉团成丸子状,放入锅中煮熟,放入盐、鸡精,淋入香油撒上香菜末即可。

苹果手机猪头特效怎么弄 手机猪头特效在哪里

苹果手机猪头特效怎么弄 手机猪头特效在哪里
演示机型:iPhone xr。操作系统:iOS 12。1、首先点击手机的短信功能并进入到信息阅读界面。2、点击左下角的相机符号,进入相机模式,然后选择视频。3、点击左下角花瓣形状的图标,再点击左下角的猴子图标选择猪头特效即可。

支付宝全家福怎么得 支付宝全家福如何得

支付宝全家福怎么得 支付宝全家福如何得
可以使用【AR扫福】来获得;||也可以在【我的家】领福袋来获得;||还可以在【蚂蚁森林】浇水或者支付宝运动,以及【蚂蚁庄园】拜年等来获得;||或者是使用沾福气卡将好友的全家福卡沾过来获得。

苹果11pro max发热怎么解决 苹果11pro max发热如何处理

苹果11pro max发热怎么解决 苹果11pro max发热如何处理
如果是因为手机开了很多后台应用,运行了比较耗能的软件导致手机发热。可以清除后台软件,让手机休息一会儿;||如果是一边玩手机一边充电导致手机发热,可以等手机充满电后,拔掉充电器再玩;||如果是手机保护壳过厚,影响了手机散热,可以将保护壳去掉或者换一个薄点的手机保护壳即可。

duaaloo什么手机型号 duaaloo手机型号是什么

duaaloo什么手机型号 duaaloo手机型号是什么
duaaloo的手机型号为荣耀畅玩7全网通版,是一款性价比相较不错的手机。