启动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 阅读详情

相关推荐

PS/2鼠标接口协议

一、PS/2鼠标接口        PS/2接口用于许多现代的鼠标和键盘,由IBM最初开发和使用。物理上的PS/2接口有两种类型的连接器:5脚的DIN和6脚的MINI-DIN。        二、鼠标的接口协议原理             PS/2鼠标接口采用一种双向同步串行协议。即每在时钟线上发一个脉冲,就在数据线上发送一位数据。但是在相互传输中 ,主机是拥有总线控制权的

Ant's home 1万+

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

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

qq_38636482的博客 2693

Linux云服务器上搭建《僵尸毁灭工程》私服全流程指南(避坑版)

本文详细介绍了在Linux云服务器上搭建《僵尸毁灭工程》私服的全流程指南,包括环境准备、SteamCMD安装、游戏服务器部署、内存优化配置及高级调优技巧。特别针对常见问题提供解决方案,帮助玩家快速搭建稳定的私服环境。

solidity8miner的博客 602

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

以 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

Rokid眼镜高精度图像识别的五大工程破局点

图像识别是AR交互的基础能力,其核心在于将现实图像映射为可计算的数字特征,并通过几何建模解算空间姿态。在专用AR眼镜场景中,该过程面临光学畸变、传感器时序错位、低延迟跟踪与人因适配等复合挑战。尤其在工业现场,Rokid Max系列的鱼眼镜头畸变、IMU-视觉异步采样、窄FOV下快速眼动等物理约束,使传统基于AR Foundation或OpenCV的识别方案失效。本文聚焦真实部署中的关键瓶颈,涵盖实时反畸变纹理渲染、原生SDK直调优化、端侧轻量CNN模型(TinyImageNet-Rokid)、IMU-视觉紧

weixin_33681778的博客 697

华为OD机试_2025 B卷_模拟消息队列(Python,100分)(附详细解题思路)

时间排序:确保事件处理顺序正确消费者管理:集合操作高效维护状态优先级实现:利用消费者ID自然排序边界处理:正确处理空消费者情况。

测试工程师的成长之路 1120

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

大模型——Coze工作流实战:一键生成像素风格视频

本文介绍了如何利用Coze平台工作流生成像素风格心理学短视频的方法。通过创建工作流、设置变量节点、调用大模型生成文案、数据格式化处理、合成音频、生成字幕等步骤,最终实现从输入主题到生成完整视频的自动化流程。文章详细展示了每个节点的具体配置方法,包括提示词编写和数据处理脚本,为读者提供了完整的像素风格视频制作解决方案。

819

uCOSii系列 延时函数OSTimeDlyHMSM剖析

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

gaoji0526的博客 1万+

【人工智能】OpenClaw网关API速率限制报错全解析 API rate limit reached. Please try again later.

对应HTTP标准状态码为429(请求过多)。该报错集中出现在OpenClaw GATEWAY DASHBOARD的聊天会话界面,核心特征为:用户最初以为是单一模型服务商的问题,先后更换OpenAI、Gemini、Ollama、Moonshot、Mercury-2等多个主流大模型API后,该报错仍稳定触发,尤其在执行复杂任务时高频出现。

奶爸的编程之路,也就一周冷个三天 6459

烧录代码显示:no st-link 和Targrt DLL has been cancelled,如何解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1578

ucos操作系统(2)——OSTimeDly

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

脱去三千烦恼丝 2405

世界职业院校技能大赛财经赛道项目参考逐字稿五

世界职业院校技能大赛财经赛道项目参考逐字稿五

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 138

【设计一个Time类】

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

武帝为此的博客 548

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

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

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

kceo的博客 3882

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

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

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

xiaoluoshan的专栏 2068

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

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、付费专栏及课程。

余额充值