启动ucosii之九OSTimeDlyHMSM(hours,minutes,seconds,milli)

uCOS-II任务之延时函数 1.在uCOS-II里,系统也提供了这样的延时函数。一个是大众版的OSTimeDly(),一个是精致版的OSTimeDlyHMSM()。 萝卜青菜,各有所爱,随你怎么选。 这两者的区别是,OSTimeDly()的延时时间是以节拍数来衡量的,OSTimeDlyHMSM()的延时时间则是以具体时间大小来衡量的。 这两个函数有着非常重要重要的作用,就是当你调用这两个函数的时候,ucos II 会进行一... 阅读详情

//延迟指定时间长度
原型出自OS_TIME.C
INT8U  OSTimeDlyHMSM (INT8U hours, INT8U minutes, INT8U seconds, INT16U milli)
{
    INT32U ticks;
    INT16U loops;


    if (hours > 0 || minutes > 0 || seconds > 0 || milli > 0) {
        if (minutes > 59) {
            return (OS_TIME_INVALID_MINUTES);    /* Validate arguments to be within range              */
        }
        if (seconds > 59) {
            return (OS_TIME_INVALID_SECONDS);
        }
        if (milli > 999) {
            return (OS_TIME_INVALID_MILLI);
        }
                                                 /* Compute the total number of clock ticks required.. */
                                                 /* .. (rounded to the nearest tick)                   */
//ucosii工作频率200hz,故1秒200次tick
//OS_CFG.H中定义 #define OS_TICKS_PER_SEC        200
//总tick=总秒*200 + [毫秒/1000]*200
//总秒*200=[hours * 3600L + minutes * 60L + seconds]*200
//[毫秒/1000]*200=tick数
//500/OS_TICKS_PER_SECOND的值基本上与0.5个节拍对应的毫秒数相同
        ticks = ((INT32U)hours * 3600L + (INT32U)minutes * 60L + (INT32U)seconds) * OS_TICKS_PER_SEC
              + OS_TICKS_PER_SEC * ((INT32U)milli + 500L / OS_TICKS_PER_SEC) / 1000L;

        loops = (INT16U)(ticks / 65536L);        /* Compute the integral number of 65536 tick delays   */
        ticks = ticks % 65536L;                  /* Obtain  the fractional number of ticks             */

//loops延时会被分割成两次32768个节拍的延时(因为用户只能延时65535个节拍而不是65536个节拍)和一次ticks个节拍的延时.
//在这种情况下,OSTimeDlyHMSM()首先考虑ticks节拍,然后是超过65535的loops节拍数
        OSTimeDly((INT16U)ticks);
        while (loops > 0) {
            OSTimeDly(32768);
            OSTimeDly(32768);
            loops--;
        }
        return (OS_NO_ERR);
    }
    return (OS_TIME_ZERO_DLY);
}

C++操作题-设计一个Time类实现两个时间相加 【问题描述】定义了一个以hours, minutes和seconds作为数据成员的Time类。设计了成员函数将两个Time对象相加(即时间相加),并进行相应的检查,查看增加的分钟数及秒数是否大于59。如果秒数大于59,则分钟数向前递增1。类似地,如果分钟数大于59,则小时数向前增1。 【输入形式】输入两个由时、分、秒构成的时间。 【输出形式】输出输入的两个时间相加后的时间 【样例输入】 2 34 45 1 47 56 【样例输出】 the result is:4:22:41 【样例输入】 2 67 1 阅读详情

相关推荐

研发工作量科学量化评估模型:从多维系数到等级落地指南

摘要:本文提出了一套基于多维系数的科学量化评估模型,用于精准评估软件开发工作量。该模型从需求复杂度、技术难度、质量要求和依赖风险四个核心维度进行量化评估,通过系数乘积计算综合工作量。文章详细说明了各维度的系数区间划分标准,并演示了从基础工作量估算到综合系数计算的具体步骤。该模型通过结构化评估过程,将主观经验转化为客观量化指标,帮助团队提高工作量评估的准确性,增强项目交付的可预测性。其价值在于使评估过程透明化、结构化和可追溯,从而减少项目延期风险,优化资源规划。

友莘居士的博客 1684

ucosII 系统节拍、软件定时器节拍计算

ucosII 系统节拍、软件定时器节拍计算

qq_38636482的博客 2693

构建家庭NAS之三:在TrueNAS SCALE上安装qBittorrent

以qBittorrent为例,说明如何在TrueNAS SCALE上使用docker来安装应用。

luoqingyong的博客 7006

对嵌入式操作系统时间分片的一点理解

以 uCOS II 为例: OS_TICKS_PER_SEC 如果 OS_TICKS_PER_SEC 为 100,表示 1 秒中断 100 次,也就意味着,任务切换时间为 10 ms。 这个很容易理解,但是怎么使用呢。 我们知道嵌入式常用的时间单位是 s、ms、us,OS_TICKS_PER_SEC 怎么和这些单位联系起来呢,又怎么去更好的理解它? 系统延时函数 OSTimeDly (x); 如...

EmbeddedOsprey 1875

RS485 MODBUS转PROFINET网关案例丨汇川变频器接入到1200 PROFINET

本案例介绍的是用北京小疆智控(北京)技术有限公司生产的GW-PN5003型MODBUS RTU转PROFINET网关将汇川变频器接入西门子PLC1200 PROFINET网络的使用方法。

bjxjzk的博客 1880

【Chisel】2.4 时序逻辑

2.4 时序逻辑@[TOC](2.4 时序逻辑)前言寄存器(`Reg`)实例Chisel的状态函数实例2 RegNext实例3 RegInit移位器附录 显式的时钟信号和复位信号 前言 没有状态机的逻辑电路是不完整的,没有状态机的逻辑电路是不完整的,没有状态机的逻辑电路是不完整的,重要的事情说三遍。 这一节我们将要学习Chisel中的时序逻辑。在最后我们会实现一个移位器。 这里你需要知道的是,前面的这几节实际上都是对Chisel的基础语法的学习,它并不会给你带来很大的“惊喜”。Chisel真正的作用是把电路

快乐学习小猪猪的博客 844

ucos ii 定时器 1ms 不成功总结

#define OS_TMR_CFG_TICKS_PER_SEC 1000u   /*     Rate at which timer management task runs (Hz)            */   网络关于定时器的设置参数介绍较少,其实看下官网马上就能知道,这个参数就是分辨率。  https://doc.micrium.com/display/osiidoc/Timer...

fafactx的专栏 1380

架构决策之消息中间件MQ系列六-Pulsar

一、架构

恰恰虎的博客 7253

uCOSii系列 延时函数OSTimeDlyHMSM剖析

目前在学习uCOSii,基于STM32F103。对uCOS的延时函数觉得有意思。遂深入代码查看如何操作的。 首先回顾一下函数的基本用法. 例:OSTimeDlyHMSM(0, 0,1, 0); 是延时1秒。 括号里的参数分别为:小时,分钟,秒,毫秒。从函数名HMSM也可以看出,H=hours,M=minutes,S=seconds,M=ms。 查看代码: ***************...

gaoji0526的博客 1万+

Allegro如何进行四层板板层设计

板层的设计

weixin_42499230的博客 3190

国产FPGA高云GW1NSR-4C,集成ARM Cortex-M3硬核

从板子整体角度来看,这是一款国产化程度很高的板子,从主控FPGA,到JTAG芯片,存储芯片、电源芯片等,都是使用的国产半导体公司的产品。板子整体尺寸也比较迷你,属于小而美类型的,可以认为是一款FPGA核心板,当然也预留了排针接口,给用户足够的扩展空间。对于想了解高云小蜜蜂SoC软硬件开发,以及对云源软件、MCU开发环境做个深度评测来说足够了。JTAG调试器固件可以增加虚拟串口功能,对于板子本来来说面积不会有改动,只需要添加两根信号线即可。

whik1194的博客 6397

ucos操作系统(2)——OSTimeDly

时间管理函数有OSTimeDly()和OSTimeDlyHMSM() 以前者为例,调用OSTimeDly()时: 1.取消当前任务的就绪态,使之进入等待态; 2.给OSTCBDly赋值,即将参数传至OSTCBDly,就是在等待态的时间; 3.调用函数OSSChed(),立即调用调度函数。 至于任务如何退出等待态,就需要进入每个节拍的中断服务函数OSTickISR(),当然此前需要先设置时钟中断向量以及时钟频率。对于OSTickISR()函数,其中调用OSTimeTick(),并在结束前调用中断退出函数OSI

脱去三千烦恼丝 2405

File Load Error for Untitled.ipynb Unhandled error 解决方案

本文主要介绍了File Load Error for Untitled.ipynb Unhandled error 解决方案,希望能对使用jupyter notebook的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 1万+

【设计一个Time类】

【问题描述】定义了一个以hours, minutes和seconds作为数据成员的Time类。设计了成员函数将两个Time对象相加(即时间相加),并进行相应的检查,查看增加的分钟数及秒数是否大于59。如果秒数大于59,则分钟数向前递增1。类似地,如果分钟数大于59,则小时数向前增1。【输入形式】输入两个由时、分、秒构成的时间。【输出形式】输出输入的两个时间相加后的时间。

武帝为此的博客 548

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

五、时间管理---任务延时[OSTimeDly()]--OS_TIME.C

函数作用:就是申请让该任务延时一段时间后再在任务就绪表上登记,在此段时间里面该任务在任务就绪表的标志位会被置为‘0’;为什么要延时,很简单就是为了进行任务切换,让比这个任务优先级更低的任务运行。而系统实时都运行任务就绪表里面优先级最高的任务。一旦规定的时间期满或者有其他任务通过调用OSTimeDlyResume()取消延时。任务就会马上进入就绪状态。

kceo的博客 3882

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

UC/OS-II的函数------OSTimeDly

功能:调用该函数的任务将自己延时一段时间并执行一次任务调度,一旦规定的延时时间完成或有其它的任务通过调用OSTimeDlyResume()取消了延时,调用OSTimeDly()函数的任务马上进入就绪状态(前提是先将任务调度后执行的任务执行到程序尾,且调用OSTimeDly的任务此时优先级最高)。 //将一个任务延时若干个时钟节拍//描述:将一个任务延时若干个时钟节拍。如果延时

xiaoluoshan的专栏 2068

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

3-(时间管理)延时函数

UCOSIII 时间管理(延时函数) 系统频率设置方法及延时函数原理 各个函数参数用法介绍,及注意事项 栗子功能+代码 延时函数会涉及到系统滴答时钟,所以有必要介绍下系统滴答时钟的原理。系统里有一个计数变量OSTickCtr。系统滴答时钟是由滴答定时器产生的,其实也就是通过一个定时器来产生特定时间间隔的中断,每产生一个系统时钟中断这个变量就自加1。而延时函数就是用这个OSTick...

深蓝判官 3452

ucos ii 系统的OSTimeDlyHMSM() 函数详解

OSTimeDlyHMSM()是ucos ii里的一个高精度任务延迟函数,允许以时、分、秒、毫秒为单位指定延迟时间,比OSTimeDly()函数提供更加直观的时间控制。

409

按时分秒延时函数 OSTimeDlyHMSM()

OSTimeDly()虽然是一个非常有用的函数,但用户的应用程序需要知道延时时间对应的时钟节拍的数目。用户可以使用定义全局常数OS_TICKS_PER_SEC(参看OS_CFG.H)的方法将时间转换成时钟段,但这种方法有时显得比较愚笨。笔者增加了OSTimeDlyHMSM()函数后,用户就可以按小时(H)、分(M)、秒(S)和毫秒(m)来定义时间了,这样会显得更自然些。与OSTimeDly()一样

FunkyFrog821951259的博客 4659

UCOS 的延时函数OSTimeDlyHMSM()实现精确延时

介绍UCOS的资料汗牛,但详细解说OSTimeDlyHMSM()函数的不多,经过本人仔细研究该函数代码并通过调试发现:要想实现精确延时的对代码进行相应的修正。    本人实现的是UCOS在2812上的移植,在其它DSP型号上移植情况是一样的,相差不大。    以下是OSTimeDlyHMSM()函数的代码片段:           ticks = ((INT32U)hours * 360

bytxl的专栏 7825

再读 ucosII源码(邵贝贝):时间管理

时间管理 前文描述过, 时钟的中断服务子程序调用节时钟节函数OSTimeTick——该函数用于通知µC/OS-Ⅱ发生了时钟节拍中断。 相关的函数见下文,源码于os_time.c中. 任务延时函数,OSTimeDly() µC/OS-Ⅱ提供了这样一个系统服务: 申请该服务的任务可以延时一段时间,这段时间的长短是用时钟节拍的数目来确定的。实现这个系统服务的函数叫做OSTimeDly()...

@角色扮演# 471

ucos 任务延时函数

在ucos里,系统也提供了这样的延时函数,一个是大众版本OSTimeDly(),一个是精致版本的OSTimeDlyHMSM(),随你怎么选择 这两者的区别就是,OSTimeDly的延时时间是以节拍数来衡量的额,OSTimeDlyHMSM的延迟时间则使以具体时间大小来很亮的。 这两个函数有着非常重要的作用,就是当你调用这两个函数的时候,ucos会进行一次任务调度,所以CPU能在各任务间进

nanjoh的博客 7270

MSP430移植μCOS-II系统之时间管理函数OSTimeDlyHMSM()延时不准确解析

前端时间做了 μCOS-II系统在MSP430F5529上面的移植,OSTimeDlyHMSM()这个时间延时不准,找了一下原因,是因为时钟节拍的问题。 OSTimeDlyHMSM()中主要还是调用了OSTimeDly函数实现的,这个函数分辨率是时钟节拍,那问题来了,时钟节拍是多少? 时钟节拍在OS_CPU_ASM.asm文件中的 TICK ISR,我在移植时使用的是看门狗

易海飞雪的专栏 1917

uC/OS-II操作系统分析 (二)

   1.时间管理  1.1OSTimeDly() 延时程序voidOSTimeDly (INT16U ticks)Ticks 延时脉冲数 ,通常与OS_TICKS_PER_SEC相联系以更精确的定时,OS_TICKS_PER_SEC在OS_CORE.H中宏定义,也就是说与处

夏爵爷的脚步 2609

任务延时函数,OSTimeDly()

µC/OS-Ⅱ提供了这样一个系统服务:申请该服务的任务可以延时一段时间,这段时间的长短是用时钟节拍的数目来确定的。实现这个系统服务的函数叫做OSTimeDly()。调用该函数会使µC/OS-Ⅱ进行一次任务调度,并且执行下一个优先级最高的就绪态任务。任务调用OSTimeDly()后,一旦规定的时间期满或者有其它的任务通过调用OSTimeDlyResume()取消了延时,它就会马上进入就绪状态。注意,

FunkyFrog821951259的博客 9676
上一篇: 启动ucosii之五OSStart()
下一篇: 启动之OS_CPU_C
IvyOnion
博客等级 码龄15年 35粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值