STM32——UCOSIII 简介

2023-05-16

目录

UCOSIII简介

UCOSIII中的任务

组成

 任务堆栈

任务控制块

任务函数 

任务函数模板

UCOSIII系统任务

组成

空闲任务

时钟节拍任务

统计任务

定时任务

中断服务管理任务

UCOSIII任务状态

组成及状态概念

UCOSIII中的delay

UCOSIII中的uart 


UCOSIII简介

  • UCOSIII是一个 可剥夺的多任务系统  具有多任务处理能力

UCOSIII中的任务

组成

  • 任务堆栈
  • 任务控制块
  • 任务函数

 任务堆栈

  • 上下切换的时候用来保存任务工作环境(STM32内部寄存器)

任务控制块

  • 记录任务各个属性

任务函数 

用户编写的任务处理代码(干活的)

任务函数模板

   void XXX_task(void *p_arg)
   {
       while(1)
       {
        。。。。。//任务处理过程
        }
    }

UCOSIII系统任务

组成

  • 空闲任务
  • 时钟节拍任务
  • 统计任务
  • 定时任务
  • 中断服务管理任务

空闲任务

  • UCOSIII创建的第一个任务,UCOSIII必须创建的任务,此任务由UCOSIII自动创建

时钟节拍任务

  • 必选任务

统计任务

  • 可选任务
  • 作用:统计CPU使用率和各个任务的堆栈使用量
  • OS_CFG_STAT_TASK_EN控制

定时任务

  • 可选任务
  • 作用:提供定时服务
  • OS_CFG_TMR_EN控制

中断服务管理任务

  • 可选任务
  • OS_CFG_ISR_POST_DEFERRED_EN控制

UCOSIII任务状态

组成及状态概念

  • 休眠态 :任务已在CPU的flash中了,但是不受UCOSIII管理
  • 就绪态系统为任务分配了任务控制块,并且任务已经在就绪表中登记,这时这个任务就具有了运行的条件,此时任务的状态就是就绪态
  • 运行态任务获得CPU的使用权正在运行
  • 等待态正在运行的任务需要等待一段时间,或者等待某个事件,这个任务就进入了等待态,此时系统就会把CPU使用权转交给别的任务
  • 中断服务态发送中断,当前正在运行的任务会被挂起CPU转而去执行中断服务函数,此时任务的任务状态叫做中断服务态

UCOSIII中的delay

函数描述
delay_osschedlock()任务调度器加锁
delay_osschedunlock()任务调度解锁
delay_ostimedly()按照节拍数延时
SysTick_Handler()滴答定时器中断服务函数
delay_init()滴答定时器与延迟函数初始化
delay_us()不会引发任务调动
delay_ms()最小ms延时时间为UCOS系统心跳时间

UCOSIII中的uart 

Void USART1_IRQHandler(void)
{
   #if SYSTEM_SUPPORT_OS  	//使用UCOS操作系统
	OSIntEnter();     
   #endif

   //中间处理函数,和不是用UCOS时相同

   #if SYSTEM_SUPPORT_OS  
	OSIntExit();    	//退出中断
   #endif
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32——UCOSIII 简介 的相关文章

随机推荐

  • 17.C语言 常见面试题

    嵌入式工程师必备0x10到题目 宏定义 1 用预处理指令 define声明一个常数 xff0c 用于表明1年中有多少秒 define 宏名 宏体 宏名 xff1a 大写字母表示 define SECOND OF YEAR 365 24 36
  • 自动控制原理第一章

    开环控制系统 xff1a 输入量与输出量没有反向联系 被控量 xff08 输出信号 xff09 xff0c 系统在特定输入下的输出称系统对该输入的响应 控制量 xff08 输入信号 xff09 给定值 扰动 xff1a 破坏控制量与被控量正
  • 利用Mavros控制无人机

    准备 xff1a 1 ubuntu18 04 2 Qgc 3 Mavros 4 ROS 5 PX4 Mavros安装 xff1a 参考安装链接 xff1a Ubuntu18 04安装px4 43 mavros xff08 解决mavros报
  • 5分钟搭建MySQL监控平台(mysql-exporter+Prometheus+Grafana)

    一 工具介绍 Prometheus 普罗米修斯可以简单理解为一个监控工具 xff0c 以时间为单位展示指定数据维度的变化 趋势 span style color fe2c24 strong mysqld exporter strong sp
  • Prometheus环境搭建

    实验环境 xff1a 准备三台虚拟机 xff0c 本文用Centos7为例 xff1b 我这里所使用的的虚拟机地址分别为 xff1a 主机名 xff1a IP prometheus weme 192 168 10 63 agent weme
  • 无人机飞控系统硬件设计

    目录 一 飞行控制系统简介 1 飞控系统功能分析 2 飞控系统基本原理 3 飞控系统的组成部分 3 1 地面部分 3 2 中央处理器 3 3 传感器模块 3 4 传输定位模块 二 飞控系统硬件平台设计 一 飞行控制系统简介 1 飞控系统功能
  • Ubuntu20.04中怎么更换源都不行install或者update始终报错,解决方案

    更换源后安装或者更新依旧报错 xff0c 试试下面两种方法 xff0c 亲测可行 方法一 xff1a 静态ip改成动态ip 如果ip是静态改成动态ip后 xff0c 重新在试试apt update 1 vi etc netplan 00 i
  • AlphaGo 引发的中国象棋之路

    笔者是一位多年的象棋爱好者 xff0c 早在2005 xff0c 中国象棋有款软件奇兵1 04 xff0c 当时打败特级大师于幼华 xff0c 又打败了柳大华 xff0c 后期软件和计算机硬件的发展 xff0c 象棋软件又有了质的飞越 xf
  • linux驱动IO模型

    1 非阻塞 当应用层读取驱动中的数据时 xff0c 无论数据是否准备号 xff0c 都需要立即返回 open 34 dev mycdev 34 O RDWR O NOBLOCK 非阻塞方式打开 默认打开方式为阻塞方式打开 O NOBLIOC
  • ROS学习(一)工作空间,功能包,节点

    本文主要介绍建立一个功能包 xff0c 一个publisher结点 xff0c 实现话题的发布 一工作空间 1创建所需的文件夹 mkdir ros cd ros mkdir src 2工作空间的初始化 cd src catkin init
  • NVIDIA Jetson Xavier NX搭建pytorch gpu环境(超详细)

    NVIDIA Jetson Xavier NX开发套件在搭建tensorflow gpu环境时可以使用指令直接安装或者官网下载whl文件安装 作者在安装pytorch环境时总是安装不上gpu版本 报错 AssertionError Torc
  • uCOS-iii学习笔记(11)——任务信号量和任务消息队列

    理解 xff1a 任务信号量 任务消息队列是跟随任务创建而来的 xff0c 不需要额外创建 xff0c 并且他和多值信号量 消息队列有一些不同 xff0c 多值信号量他们是建立于1对多得关系 xff0c 而我们的任务信号量还有任务消息队列是
  • C语言当中什么情况下形参可以改变实参详细实例及解释

    在 C 语言中 xff0c 形参可以改变实参的值的情况与 C 43 43 类似 xff0c 也有传递指针和传递引用两种方式 传递指针 当我们传递一个指针作为函数的形参时 xff0c 函数内部同样可以通过这个指针来改变指向的实参的值 这是因为
  • git仓库与vscode关联

    git仓库与vscode关联 git安装完后 xff0c 会提示输入用户信息 a 设置用户名 xff1a git config global user name 39 你再github上注册的用户名 39 b 设置用户邮箱 xff1a gi
  • python修改全局变量

    span class token comment 全局变量 span num span class token operator 61 span span class token number 10 span span class toke
  • python函数不能修改全局变量

    span class token comment 全局变量 span num span class token operator 61 span span class token number 10 span span class toke
  • FreeRTOS笔记(六)互斥量mutex

    概念 互斥量是二进制信号量的一个变种 xff0c 开启互斥量需要在头文件FreeRTOSConfig h 设置configUSE MUTEXES 为1 互斥量和信号量的主要区别如下 互斥量用于保护资源时必须要被返还 信号量用于数据同步时不需
  • 完爆面试官!spring可能带来的一个深坑

    4步套路 xff0c 解决动态规划问题 1 确定问题状态 提炼最后一步的问题转化 2 转移方程 xff0c 把问题方程化 3 按照实际逻辑设置初始条件和边界情况 4 确定计算顺序并求解 结合实例感受下 xff1a 你有三种硬币 xff0c
  • 树莓派Raspberry Pi 2B在Kali上使用TightVNCServer灰屏

    1 将 root vnc xstartup改为 span class token shebang important bin sh span unset SESSION MANAGER unset DBUS SESSION BUS ADDR
  • STM32——UCOSIII 简介

    目录 UCOSIII简介 UCOSIII中的任务 组成 任务堆栈 任务控制块 任务函数 任务函数模板 UCOSIII系统任务 组成 空闲任务 时钟节拍任务 统计任务 定时任务 中断服务管理任务 UCOSIII任务状态 组成及状态概念 UCO