UCOS-III的代码意义

2024-01-30 17:36
文章标签 代码 iii 意义 ucos

本文主要是介绍UCOS-III的代码意义,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

延时函数

OSTimeDlyHMSM()


void OSTimeDlyHMSM (CPU_INT16U hours,              //延时时间–时
                                        CPU_INT16U minutes,         //延时时间–分
                                        CPU_INT16U seconds,        //延时时间–秒
                                        CPU_INT32U milli,               //延时时间–毫秒
                                        OS_OPT opt,                        //选项即延时的模式
                                        OS_ERR *p_err)                   //返回的错误值

两个例子:
OSTimeDlyHMSM(0,0,0,20,OS_OPT_TIME_PERIODIC,&err)

例如这里选择了相对延时,延时 =20毫秒


OSTimeDlyHMSM(0,0,1,20,OS_OPT_TIME_PERIODIC,&err)

例如这里选择了相对延时,延时 =1秒 + 20毫秒

 OSTimeDly() 

void OSTimeDly (OS_TICK dly,         //延时需要的节拍数
                            OS_OPT opt,         //延时类型的选项
                            OS_ERR *p_err);//返回的错误值
两个例子
OSTimeDly ( 1000, OS_OPT_TIME_DLY, & err );         //相对延时 延时1000个时钟节拍(5s)
OSTimeDly ( 200, OS_OPT_TIME_DLY, & err );           //相对延时 延时200个时钟节拍(1s)

延时函数用着两个基本就可以了,延时函数一旦使用就意味着任务要从就绪态变成等待态了,

任务在延时的时间之内不运行,延时结束会重新从等待态变回就绪态才会继续运行.

OSTimeDlyResume ()


void OSTimeDlyResume ( OS_TCB *p_tcb,             //任务的任务控制块
                                           OS_ERR *p_err);         //返回的错误值

首先有要注意几点:
1.你要停止一个任务的延时,该任务必须之前是进入延时,不然怎么停止
2. 肯定是在另一个任务上面用这个将你想停止延时的任务停掉,即 该函数的 p_tcb 参数不可以是当前任务
3. 该函数不能在中断服务函数里面使用
4. 有限等待某些消息或者信号量等等这种任务的延时是不可以停止的,还有就是没延时就被挂起来的任务是没有意义的,只有经过 OSTimeDly()、OSTimeDlyHMSM() 延时的任务才会执行延时停止才有效果。

任务管理功能函数

  1. 建立任务:OSTaskCreate()
  2. 堆栈检验:OSTaskStkChk()
  3. 删除任务:OSTaskDel()
  4. 改变任务优先级:OSTaskChangePrio()
  5. 挂起任务:OSTaskSuspend()
  6. 恢复任务:OSTaskResume()

OSTaskCreate()

void  OSTaskCreate (OS_TCB        *p_tcb,        指向任务的TCB指针CPU_CHAR      *p_name,       用于为任务提供名称OS_TASK_PTR    p_task,       指向任务的代码void          *p_arg,        为任务传递参数OS_PRIO        prio,         任务优先级,数字越小优先级越高CPU_STK       *p_stk_base,   指向任务的堆栈基址指针CPU_STK_SIZE   stk_limit,    限制堆栈元素数CPU_STK_SIZE   stk_size,     堆栈大小OS_MSG_QTY     q_size,       可以发送到任务的最大消息数OS_TICK        time_quanta,  时间片void          *p_ext,OS_OPT         opt,          任务行为信息OS_ERR        *p_err)        错误返回值

创建失败的原因:

在中断中创建 ERR:        OS_ERR_TASK_CREATE_ISR
用户没有为任务传输相关参数
缺少指向任务的TCB指针 ERR:        OS_ERR_TCB_INVALID
缺少指向任务的代码 ERR:        OS_ERR_TASK_INVALID
缺少指向任务的堆栈基址指针 ERR:        OS_ERR_STK_INVALID
缺少堆栈大小 ERR:        OS_ERR_STK_SIZE_INVALID
限制堆栈元素数大于堆栈大小 ERR:        OS_ERR_STK_LIMIT_INVALID
pero>max or pero == 0 ERR:        OS_ERR_PRIO_INVALID
占用已使用特定任务的优先级 ERR:        OS_ERR_PRIO_INVALID

OSTaskDel()

OSTaskDel(  OS_TCB   p_tcb,  OS_ERR   p_err)

​ 该函数可以通过指定NULL来删除自己

OS_TaskSuspend()

OSTaskResume ()

OSTaskStkChk()

OSTaskChangePrio()

这篇关于UCOS-III的代码意义的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/661012

相关文章

jupyter代码块没有运行图标的解决方案

《jupyter代码块没有运行图标的解决方案》:本文主要介绍jupyter代码块没有运行图标的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录jupyter代码块没有运行图标的解决1.找到Jupyter notebook的系统配置文件2.这时候一般会搜索到

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Spring Boot 3.4.3 基于 Spring WebFlux 实现 SSE 功能(代码示例)

《SpringBoot3.4.3基于SpringWebFlux实现SSE功能(代码示例)》SpringBoot3.4.3结合SpringWebFlux实现SSE功能,为实时数据推送提供... 目录1. SSE 简介1.1 什么是 SSE?1.2 SSE 的优点1.3 适用场景2. Spring WebFlu

java之Objects.nonNull用法代码解读

《java之Objects.nonNull用法代码解读》:本文主要介绍java之Objects.nonNull用法代码,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录Java之Objects.nonwww.chinasem.cnNull用法代码Objects.nonN

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤