第七章 在51单片机上移植uc/os-2

7.1 uc/os-2移植的一般性问题

7.1.1可重入函数

(1)多个任务调用同一个函数,其中的全局变量丢失产生错误。

(2)一般来说,一个可重入函数只使用局部变量,局部变量存储在堆栈中,如果一定要用,必须做保护。

7.1.2时钟节拍的产生

uc/os-2是通过硬件中断来实现系统时钟,并在时钟中断服务程序中来处理与时间相关的问题的。

7.1.3任务堆栈的设计:处理器支持一定数量的硬件堆栈,能够读写操作。

(1)堆栈的格式,因为生长方式不同。

(2)系统堆栈与任务堆栈的关系。堆栈必须设置在一个特定区域内:51要求堆栈必须在片内RAM,只能把应用程序中的任务堆栈的内容存放在片外RAM中,片内PAM中设置一个公用的堆栈

(3)片外RAM中用来存放任务堆栈内容的区域叫做任务堆栈映像,而片内PAM中的公用堆栈叫做系统堆栈。

7.2在51系列单片机上移植uc/os-2

一般用C语言编写。

7.2.1改写文件OS_CPU.H

(1)堆栈的增长方向:51是从低地址向高地址增长->OS_STK_GROWTH为1

(2)定义临界段的宏

(3)定义任务切换宏

(4)定义数据类型

7.2.2任务堆栈的设计

(1)51堆栈指针SP总是先加1再存数据,所以用的时候先减一。

(2)任务切换时,计算任务堆栈映像的最低地址空间用来存放用户堆栈的长度。

7.2.3文件OS_CPU_C.C的改写

改写任务堆栈初始化函数OSTaskStkInit(),使用西永设置时钟中断,添加定时器的初始化程序。

(1)改写任务堆栈初始化程序

(2)系统时钟初始化

7.2.4注意事项

(1)不要多修改。

(2)Keil中 重入函数有标注reentrant关键字

7.3一些应用

第七章 在51单片机上移植uc/os-2相关推荐

  1. uCOS-II在51单片机上的移植

    uCOS-II在51单片机上的移植 约定:文中所写的硬件堆栈或系统堆栈是指51单片机SP指针所指向的堆栈空间,而用户堆栈或任务堆栈是指用来保存任务状态为每个任务分配的堆栈空间. 前一段时间一直在学习U ...

  2. 在51单片机上跑RTOS有没有意义?

    关注+星标公众号,不错过精彩内容 作者 | strongerHuang 微信公众号 | 嵌入式专栏 最近看见我的一个技术交流群在讨论一个问题:在51单片机上跑RTOS有没有意义? 今天就来围绕51和R ...

  3. 51单片机上连YL69土壤湿度传感器获取的数据在LCD上显示出来

    要做一个项目,被分配到做DS18B20温度传感与YL69土壤湿度传感器在51单片机上用LCD显示屏显示出来.温度传感模块很简单,网上到处都是资料,但是YL69的资料就很少了,特别还是在51单片机上实现 ...

  4. STM32F103C8T6移植uc/OS

    STM32F103C8T6移植uc/OS STM32F103C8T6移植uc/OS STM32F103C8T6移植uc/OS 一.题目要求 二.使用STM32CubeMX建立HAL库 三.准备uCOS ...

  5. Security Tutorials系列文章第七章:User-Based Authorization(上)

    本文英文原版及代码下载:http://www.asp.net/learn/security/tutorial-07-cs.aspx Security Tutorials系列文章第七章:User-Bas ...

  6. 51单片机C语言跑马灯,51单片机上实现控制跑马灯

    在MCS一51单片机的控制系统中,它的四个并行8位输入输出端口P0一P3是我们经常使用的.在并行端口的编程学习中,"跑马灯"是单片机并行端口输出控制的典型实例.所谓跑马灯,是指将八 ...

  7. 智慧农场,51单片机上实现DS18B20与YL69土壤湿度传感器,并将两个获取的数据在LCD上显示出来

    上一篇我说了我们做的是两个模块,但是介于DS18B20的资料太多,我就不再阐述,直接给最终的代码. 该代码是将温度传感器与YL69湿度传感器获取的数据在51单片机LCD上显示出来 #include & ...

  8. 51单片机上传数据到手机APP

    前言: 最近在指导朋友毕设时发现的一个比较简单实用的功能 实现功能: 将温度数据上传到手机APP 所需材料: 1.51单片机 2.WIFI模块:ESP8266-01S 3.温度传感器:DS18B20 ...

  9. C和指针 (pointers on C)——第七章:函数(上)

    第七章 函数 这一章对于有一定C的基础的人有一定优秀代码风格的人来说,并非非常虐.关于stdarg宏可能有些陌生.它负责可变參数列表的定义. 总结: 新式风格和旧式风格就不要提了.八百年前的事情. 函 ...

  10. 【51单片机】在51单片机上用C语言实现循环点亮8盏LED灯

    标题[51单片机] 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 代码如下(示例): #include <REGX52.H> //sbit LED = P2^0; vo ...

最新文章

  1. 泰晤士报华科计算机排名,国内大学排行被“高估”的三所985大学,实力远小于排名,你认可吗?...
  2. ireport修改jrxml中的sql语句_SQL中的create table与insert into语句
  3. Java String字符串和整型int的相互转换
  4. C++运算符重载 摘自网络
  5. 拳王虚拟项目公社:闲鱼卖资源还可以卖吗?闲鱼怎么卖虚拟资源?卖什么资源赚钱?闲鱼卖虚拟资源如何赚到钱?
  6. 一个完整的软件项目开发流程
  7. Win7电脑下载的软件无法安装怎么办?
  8. 内网穿透软件NPS--客户端NPC SDK交叉编译ARM64位库
  9. 阿里月饼事件被辞程序员冤吗
  10. 计算机英语单词怎么巧背,巧计英语单词的26个秘诀
  11. php语言标记可用什么符号,【单选题】不可用作PHP语言标记用的是什么( )符号 A. ? B. 〈php C. ?...
  12. 【全栈开发实战小草看书之Web端(一)开发环境】
  13. 重温归一化(MinMaxScaler)和标准化(StandardScaler)
  14. SDHC介绍(收集网上资料-仅供学习之用)
  15. C语言-5月23日-指针(一)
  16. 用手机编程和用电脑编程有什么区别?
  17. 字节跳动,野心十足,十年有可能打败腾讯成为第二个互联网巨头吗?
  18. 深度学习之LSTM案例分析(二)
  19. MIT6.830-2022-lab4实验思路详细讲解
  20. ubuntu18.04 安装mx250显卡驱动(超详细)

热门文章

  1. 【iOS】XCode14 iOS16适配 pod签名 12.1闪退
  2. 用Java写倒叙数字输出
  3. V4.0系列软件如何替换授权文件
  4. 转】用Hadoop构建电影推荐系统
  5. 人工智能续写哈利波特,超魔幻风格你能接受吗?
  6. 泰克Tektronix示波器软件TDS1012|TDS2002|TDS2004上位机软件NS-Scope
  7. Js获取昨天今天明天的日期
  8. 傅里叶变换之掐死教程(完整版)
  9. Android 打造任意层级树形控件 考验你的数据结构和设计
  10. CCF试题 201903-2 二十四点