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

UCOSII 使用笔记相关推荐

  1. UCOSII学习笔记[开篇]

    学习及使用单片机的时间到现在为止其实不是很长,中间断断续续的大概也有两三年的时间了.因为一直在上学,现在也上了研究生了,中间所涉及的东西并不是很多,研究也不是很透彻和深入.上研究生以来,选择了我十分有 ...

  2. uCOS-II 学习笔记--------OSInit函数

    系统初始化 1 void OSInit (void) 2 { 3 OSInitHookBegin(); /* Call port specific initialization code */ 4 5 ...

  3. UCOSII移植教程仅仅移植不讲解

    摘要:入门UCOSII学习笔记记录,看的正点原子的视频 文章目录 笔记 移植步骤 笔记 RTOS比前后台系统好在哪里?主要是在执行中断任务的时候,RTOS可以中断低优先级的任务,执行高优先级的任务:而 ...

  4. UCOS-II移植ARM的笔记

    UCOS-II移植ARM的笔记(转贴) UCOS-II的移植需要提供2,3个文件分别介绍如下: 一:OS_CPU.H 1 与编译器有关的数据类型 经典的全局变量定义,可以套用,简洁明了实用性好. #i ...

  5. 嵌入式实时操作系统ucosii原理及应用(任哲)-- --阅读笔记2

    本文是<嵌入式实时操作系统ucosii原理及应用(任哲)>一书第三章的阅读笔记,知识点多为摘录,若希望深入了解,请购买该书认真研读.由于一些知识比较零散,记起来不大方便,又习惯画图辅助记忆 ...

  6. STM32学习笔记一一UCOSII(1)

    前言: 为了方便查看博客,特意申请了一个公众号,附上二维码,有兴趣的朋友可以关注,和我一起讨论学习,一起享受技术,一起成长. 1. 简介 UCOSII 是一个可以基于 ROM 运行的.可裁减的.抢占式 ...

  7. UCOSII 移植文件详解——笔记

    1.滴答定时器 SysTick 滴答定时器是一个24位的倒计数定时器,当计数到0时,将从RELOAD寄存器中自动重装载定时器初值,只要不关闭SysTick使能位,就将永久不息. SysTick的最大使 ...

  8. 嵌入式实时操作系统UCOSII(邵贝贝)--笔记之实时系统概念(第二章)

    2.实时系统概念 实时系统的特点是,如果逻辑和时序出现偏差将会引起严重后果的系统.有两种类型的 实时系统:软实时系统和硬实时系统.在软实时系统中系统的宗旨是使各个任务运行得越快 越好,并不要求限定某一 ...

  9. 嵌入式实时操作系统ucosii原理及应用(任哲)-- --阅读笔记1

    嵌入式计算机系统与通用型计算机相比,具有以下特点:专用性强.可裁剪性好.实时性与可靠性好.功耗低. 嵌入式计算机系统一开始是建立在与通用型计算机系统相似的硬件环境中的,由于通用性计算机系统的可裁剪性. ...

最新文章

  1. WPD:Page Download Time Breakdown选项详解
  2. 执行在一行中组合多个Linux命令
  3. 做好信息安全 必须打造良好的企业安全文化
  4. 学会Java可以从事哪些方面的工作?
  5. hi3798mv300是什么手机_华为海思电视芯片hi3798mv300 硬件参数如何?
  6. 基于NIOS II的液晶显示设计——自定义图形库
  7. 合理设置apache的连接数及进程工作方式
  8. vs2010中Calendar控件的一些使用
  9. 机箱硬盘指示灯不亮_一文学会“剪不断,理还乱”的主板跳线与机箱连接
  10. 操作需要计算机管理员权限,win10系统操作文件时提示需要管理员权限的处理教程...
  11. 一、node.js的windows环境设置
  12. Android应用性能优化整体策略
  13. 如何让你的网站快速被百度收录。
  14. python加法程序结果图片_OpenCV-Python系列之图像上的算术运算
  15. 恐龙机器人钢索恐龙形态_恐龙有的四脚行走有的两脚行走,有的会飞有的会游,差别咋这么大...
  16. 为什么全局钩子必须写到dll里面?
  17. linux磁盘介绍及磁盘分区
  18. 私有云的优缺点_私有云服务器的优缺点
  19. 【安全系列】beef-xss攻击示例
  20. 知乎网的CSS命名规律研究

热门文章

  1. Heat Transfer|HW1
  2. python老鼠打洞问题_内网渗透-老鼠打洞之SSH隧道
  3. python数字图像处理笔记02 图像的采集
  4. Android 音频源码分析——AudioTrack设备选择
  5. 基于翔云人工智能平台的人脸识别开发
  6. Socket接口测试
  7. socket网络编程及通过socket接口实现一个自我通信的简易UDP服务器
  8. FPGA笔试题知识点汇总(41~60)
  9. 调用百度智能云API,实现身份证智能识别并转语音 | Python
  10. Android 禁止屏幕旋转