UCOSII 使用笔记

2023-05-16

UCOS使用总结

1.UCOS 是抢占式系统,换句话来说,优先级高的能够被准时执行,优先级低的很容易被高优先级抢占,导致执行任务延迟。

2.UCOS一般为64个优先级,有些可以到256,其实一般开发就几个任务,任务多了更不好把控。很多时候都尽量少的开辟新的任务,因为这样可以避免开辟更多的栈,

3.目前而言使用的QP,只用到了消息队列,其它信号量和事件都没有使用,无论是消息队列和信号量和事件都是任务之间通讯使用的,也就是书上说的同步,同步说法个人认为搞的太过抽象。不方面初学者理解。

4.任务调度,在循环中为OSSched,在中断中是退出中断后调用红OSIntExit,在这个函数中判断中断嵌套是不是执行完,执行完就执行一次调度,OSTimeTick 是针对OSTimeDly,在这个函数中对应任务的一个计数器减。

5.UCOS 默认开启空闲任务,这个任务一般不适用,我一般用来喂看门狗。

UCOS CPU利用率显示

UCOS中开辟一个状态任务,其实就是定时去 看空闲计数器执行了多少次。

一个大任务启动,然后调用OSStatInit,这个函数其实就是执行一个任务延时,然后读取这个时间段 空闲任务计数器的个数。

以此来作为后续 计算CPU利用率的分母,后面执行程序,就按照这个定时读取空闲计数器个数,因为一旦有任务执行,空闲任务势必会被抢占,也就是得不到执行。

cortex m0 使用理解

一般m0 有R0 到 R15

R0-R7为低位寄存器,R8-R12为高位寄存器。

R13为堆栈寄存器。

R14为LR寄存器

R15为PC寄存器

XPSR  中很重要的低位数据,表示中断执行的函数号。这个东西意思,单片机执行中断,在那个中断服务函数中,尤其是中断嵌套中,就可以清晰的看到在那个中断执行中。这个寄存器高为是状态寄存器,表示当前执行计算的一些状态,类似51中的PSW,

PRIMASK,这个寄存器的最低位就是全局中断的开关,在OS中一般是保持这个寄存器,然后最后恢复这个寄存器。

无论在函数前面是否开启全局中断,都是在恢复PRIMASK的值,这样就不用粗暴的开关中断,因为你不知道函数是不是在前面就关闭了全局中断,然后您执行一次临界台操作又把全局中断开启了。

arm V6 m只有四个优先级,默认栈使用的MSP,无论是主程序还是中断都使用的MSP,在主循环显示的thread模式,中断中是handle模式,我犯了过一次错误就是在中断中执行了低功耗操作,但是我不知道,为什么呢,因为我用的老的ucos 任务切换的过程没有调用pendsv操作,都是手动直接切换,这个导致很多时候函数都是在handle模式中。

在中断中执行低功耗操作,要想唤醒,要让配置的唤醒中断源大于当前中断。否则唤不醒

中断执行硬件自动压栈顺序

消息队列

创建消息队列,在UCOS中使用事件管理,Event.

OSQPend

OSQPost()

Post过后 置位事件所属任务的优先级。然后设置调度,因为这个函数是在中断中执行,软中断需要等待中断完执行才能被执行。

 

 

 

 

 

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

UCOSII 使用笔记 的相关文章

  • vimdiff 使用笔记

    vimdiff 是建立在 diff 命令之上的 启动方法 xff1a vimdiff file left file right 或者 vim d file left file right 只在某一文件中存在的行的背景色被设置为蓝色 xff0
  • MacBook M12020使用笔记

    1 安装软件 1 1 安装brew 安装brew xff08 知乎高手写的脚本 xff0c 可以选择国内镜像源 xff09 bin zsh c span class token string 34 span class token vari
  • 关于ElasticsearchRepository的使用笔记

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 一个很全的API链接文档 以下是使用Spring data Jpa操作ES的一些记录 在ElasticsearchRepository中我们可以使用Not Add Like
  • UCOSII-信号量与信号量集

    文章目录 一 前言1 任务间的同步2 事件 二 信号量1 信号与信号量介绍2 信号量常用函数3 信号量使用流程 xff08 互斥信号量和信号量两种 xff09 4 互斥型信号量使用5 使用一般信号量做任务同步 三 信号量集 事件标志组 1
  • UCOSII-消息邮箱与消息队列

    文章目录 一 事件控制块及事件处理函数1 等待任务列表2 事件控制块的结构3 操作事件控制块的函数4 空事件控制块列表 二 消息邮箱1 消息邮箱介绍2 消息邮箱操作步骤 三 消息队列1 消息指针数组2 队列控制块3 消息队列的操作流程 四
  • kalibr使用笔记

    官网 GitHub ethz asl kalibr The Kalibr visual inertial calibration toolbox The Kalibr visual inertial calibration toolbox
  • Jenkins使用笔记

    本章简单记录Jenkins的使用笔记 首先 xff0c 我们从官网中下载安装介质 xff0c 可以看到这里有适合各种操作系统版本的安装源介质 xff0c 简单起见 xff0c 我们直接下载一个通用的war程序包 执行命令java jar j
  • ffmpeg使用笔记

    视频压缩 ffmpeg i lt input gt vcodec libx264 crf 25 lt output gt 分辨率调整 ffmpeg i 123 mp4 s 960x540 1 mp4 视频截取 截取 xff08 t1 43
  • ucosii中消息队列、消息邮箱、信号量的区别

    1 用信号量进行行为同步时 xff0c 只能提供同步的时刻信息 xff0c 不能提供内容信息 若被控制方要求得到控制方的内容信息时 xff0c 可以使用消息邮箱或消息队列 2 但由于消息邮箱里只能存放一条消息 xff0c 所以使用消息邮箱进
  • ROS使用笔记

    文章目录 1 提取bag中固定topic或者固定时间段数据2 提取pcd数据3 记录数据4 service amp action5 roslaunch文件6 自定义消息7 from raw velodyne packets to velod
  • UCOSII 消息队列、信号量集、软件定时器

    1 消息队列 xff1a 作用 xff1a 在任务之间传递多条信息 组成 xff1a 事件控制块 消息队列 消息 消息队列数据结构 队列控制块的结构定义 xff1a typedef struct os q struct os q OSQPt
  • 学习ucosii要用到的几本书和软件

    原帖地址 xff1a http bbs ednchina com BLOG ARTICLE 2020186 HTM 打算学习一个嵌入式操作系统 xff0c 研究了一下决定还是先研究一下ucosii xff0c 一方面权当学习C语言 xff0
  • rtthrea-ucosii-freertos三系统学习总结

    三系统基本功能对比 RT thread ucosii freertos 任务调度 抢占式 时间片式 xff08 多级队列位图调度 xff09 抢占式 xff08 纯位图调度 xff09 抢占式 时间片式 xff08 遍历列表调度 xff09
  • CodeWarrior 10.7 使用笔记

    1 Code Warrior 10 7 IDE 工程创建 利用工程向导快速创建工程 1 1 点击菜单File BareBoard Project 裸板工程 1 2 设置工程名称 xff08 默认将该工程创建在当前工作空间 xff08 wor
  • 【Python】SimpleITK使用笔记

    文章目录 1 概念1 1 nii格式1 2 SimpleITK1 3 SimpleITK 图像 2 基本操作2 1 常见属性2 1 读取和保存图像2 2 SimpleITK图像数据和Numpy矩阵数据之间的转换 1 概念 1 1 nii格式
  • mysql使用笔记

    创建数据库 create database database name 删除数据库 drop database database name 创建表 span class token comment 最简单的语法 span span clas
  • UCOSII 使用笔记

    UCOS使用总结 1 UCOS 是抢占式系统 xff0c 换句话来说 xff0c 优先级高的能够被准时执行 xff0c 优先级低的很容易被高优先级抢占 xff0c 导致执行任务延迟 2 UCOS一般为64个优先级 xff0c 有些可以到25
  • LTC6820和isoSPI使用笔记

    一 LTC6820使用笔记 1 MSTR主控 受控 MSTR 引脚 11 引脚 12 xff1a 串行接口主 从选择器输入 位于隔离式接口的主控器侧 xff08 SPI主机 xff09 xff0c 引脚接 VDD 位于隔离式接口的受控器侧
  • Git:使用笔记

    git局部配置 git config user name 34 username 34 git config user email 34 email 34 git带用户密码clone git clone https username pas
  • os_mutex.c(全)

    无等待地获取互斥型信号量 OSMutexAccept OS EVENT pevent INT8U perr 创建互斥型信号量OS EVENT OSMutexCreate INT8U prio INT8U perr 删除信号量OS EVENT

随机推荐

  • 卡尔曼算法笔记---思想和实际应用物理含义的理解

    此片blog的目的是理解卡尔曼算法的思想和实际应用的物理含义 xff0c 想法很好 xff0c 却只能理解冰山一角 xff0c 先记下这一角 另本blog参考卡尔曼滤波 从推导到应用和徐亦达卡尔曼推导视频 首先认识卡尔曼算法在数学领域是什么
  • ELK-LogStash6.5.4

    ELK LogStash6 5 4 前言 与Elasticsearch Kibana不同 xff0c Logstash默认并不作为系统服务安装 xff0c 我们也不建议作为服务启动 主要原因为 xff1a 大多数情况下 xff0c Elas
  • pixhawk博客导读

    写的东西有点多 xff0c 写的也有点乱 xff0c 看题目也不知道内容是什么 xff0c 为了方便网友观看自己感兴趣的地方 xff0c 笔者把pixhawk博客归类一下 由于笔者也是边学习边写的 xff0c 难免有错误 xff0c 还请多
  • 科普“智能导航”--整理自大疆工程师

    1 飞行器想要稳定飞行 xff0c 需要 15 个状态量 xff1a 三维角度 xff0c 三维角度对应的三维速度 三维加速度 三维角速度 xff0c 三维位置 传感器的测量如下 xff1a 2 传感器自身的限制 xff1a 1 惯性测量元
  • pixhawk px4 字符型设备驱动

    分析字符型设备为什么register open read write怎样与底层驱动代码联系在一起的 xff0c 为什么需要注册 xff0c 为什么会有路径 xff0c 为什么open之后read write就可以读 写了 另 xff1a 此
  • pixhawk px4 spi设备驱动

    此篇blog是以nuttx官网介绍为出发点 xff0c 先分析如何初始化的 xff0c 再分析如何读取传感器数据的 xff0c 最后对比了字符型设备操作和spi驱动的实现方式的差别 如有错误还请指正 6 字符型设备 所有的结构体和API都在
  • Linux驱动概念扫盲篇

    驱动程序完全隐藏了设备工作的细节 用户的活动通过一套标准化的调用来进行 这些调用与特别的驱动是独立的 设备驱动的角色就是将这些调用映射到作用于实际硬件的和设备相关的操作上 驱动应当做到使硬件可用 将所有关于如何使用硬件的事情留给应用程序 一
  • ardupilot & px4 书写自己的app & drivers (二)

    新建任务列表任务 打印时间 任务列表 const AP Scheduler span class hljs tag Task span Copter span class hljs tag scheduler tasks span span
  • Docs » Learning the ArduPilot Codebase » EKF » Extended Kalman Filter Navigation Overview and Tuning

    原文 xff1a http ardupilot org dev docs extended kalman filter html extended kalman filter navigation overview and tuning 本
  • Linux常用命令

    压缩 解压命令 01 tar格式 解包 xff1a xff0a xff0a xff0a xff0a xff0a xff0a xff0a tar xvf FileName tar 打包 xff1a xff0a xff0a xff0a xff0
  • linux C编程控制树莓派

    系统准备 1 xff09 打开Win32DiskImager exe 2 xff09 PC机插入sd卡 3 xff09 选择要烧录的系统 xff0c 笔者选择Ubuntu mate 16 04 4 xff09 烧录 显示 默认HDMI显示
  • mission planner发送数据之mavlink

    前段时间研究mp的地面站 xff0c 看了几天有点体会 xff0c 看网上的解析比较少 xff0c 写上来和大家分享下 xff0c 全是自己的理解 xff0c 东西比较少 xff0c 硬货不多 xff0c 还请见谅 最开始是想做个无人机超声
  • ELK-使用nxlog+filebeat采集不同类型的日志输出到logstash

    ELK 使用nxlog 43 filebeat采集不同类型的日志输出到logstash 文章目录 ELK 使用nxlog 43 filebeat采集不同类型的日志输出到logstash 前言正常的采集配置开启多个端口监听优化nxlog xf
  • docker搭建prometheus监控

    介绍 prometheus是开源的监控解决方案 他的监控侧重于云原生应用 xff0c 例容器 k8s集群 prometheus通过各种各样的exporter去监控各种metric指标数据 xff08 本期目标 xff1a docker部署p
  • 回首2013,展望2014

    此刻值此2013年末 xff0c 明天便是元旦 近日浏览CSDN论坛时 xff0c 发现有许多的坛友都在写2013年度总结 xff0c 博客作为个人的名片 xff0c 也决定开始尝试写博客 xff0c 我的第一篇博客就是关于2013年度总结
  • MSSQL分享:sp_writeall 将文本文件内容全部写入某一文件

    alter PROC sp writeall 64 dirpath varchar 1024 64 filetype varchar 255 61 39 sql 39 as declare 64 sql varchar 4000 64 sq
  • 多旋翼飞行器设计与控制实践学习总结

    在11 4 3半自主控制模式控制器上加入自己的控制器 注意事项 1 在进行硬件在环仿真时必须保证整个系统是离散控制系统 xff0c 这里有一个傻瓜式的方式 xff0c 就是一键将所有模块均替换为离散模块 xff0c 可以参照这个连接 htt
  • 如何看英文文档

    本一直以为看不懂官方英文文档是因为词汇量不够 后来发现其实并不是 xff0c 如果没有专业背景 xff0c 没有相应的知识点 xff0c 就算你认识这个单词 xff0c 也会看不懂他在说什么 理由如下 xff1a 在看MyBatis Gen
  • 技术人成长中的得与失,想当程序员或者已经是程序员的要注意了!

    每个人在成长过程中 xff0c 都免不了在得失中摇晃 xff0c 对我来说 xff0c 将来如何更好地去平衡得失 xff0c 是需要思考的问题 xff0c 而对新入行的年轻人来说 xff0c 能从我这些总结中获得一点点启发 xff0c 那我
  • UCOSII 使用笔记

    UCOS使用总结 1 UCOS 是抢占式系统 xff0c 换句话来说 xff0c 优先级高的能够被准时执行 xff0c 优先级低的很容易被高优先级抢占 xff0c 导致执行任务延迟 2 UCOS一般为64个优先级 xff0c 有些可以到25