单片机和RTOS

news2024/11/26 16:56:12

一.单片机和RTOS区别

单片机是一种集成了处理器、内存、输入输出接口和外围设备控制器等功能的微型计算机系统。它通常用于控制简单的嵌入式系统,如家电、汽车电子、工业控制等。单片机具有低功耗、低成本和高可靠性等特点。

而RTOS(Real-Time Operating System)是一种实时操作系统,专门设计用于处理实时任务的操作系统。实时任务是指对实时性要求比较高,需要在规定的时间内完成的任务。RTOS为开发者提供了一套轻量级的任务调度、中断处理、内存管理和通信机制等,以满足实时任务的需求。

在嵌入式系统开发中,通常将RTOS和单片机结合使用。RTOS负责管理系统的实时任务,提供任务调度和中断处理等机制,而单片机则负责执行实时任务的具体操作。通过使用RTOS,开发者可以更好地管理系统资源,提高系统的稳定性和可靠性,并且更容易编写和维护实时任务代码。
![2024-02-18T13:56:27.png][1]

二.什么是任务

一段代码+运行位置+运行环境

在计算机科学中,任务(Task)指的是一个需要计算机系统执行的工作单元或操作。任务可以是一个指令序列、函数、进程、线程或任何需要计算机执行的可定义的工作。

任务是计算机系统中的基本单位,通过将大型任务分解为更小的子任务,可以简化系统的设计和管理。每个任务通常有特定的输入、处理逻辑和输出。任务可以并行执行(在多个处理器或核心上同时执行)或顺序执行(按照特定的顺序依次执行)。

在操作系统中,任务通常是指进程或线程,它们是并发执行的实体。每个任务都有自己的代码、数据和运行环境。任务调度器负责按照一定的策略决定任务的执行顺序和分配系统资源。

在实时操作系统(RTOS)中,任务的概念更加重要,因为实时任务对于按时响应和满足时间限制非常关键。RTOS通过任务管理器来分配系统资源、调度任务并确保按时执行高优先级任务。

总而言之,任务是一个计算机系统中需要执行的工作单元,它可以是指令序列、函数、进程、线程或其他定义的操作单元。任务可以并行或顺序执行,是计算机系统的基本单位之一。

三.函数运行环境

LDR 读
STR 写
R13 sp 栈
R14 LR 返回地址
R15 PC 当前指令地址
![2024-02-18T14:08:58.png][2]

![2024-02-18T14:10:48.png][3]

![2024-02-18T14:13:54.png][4]
![2024-02-18T14:16:54.png][5]
![2024-02-18T14:21:14.png][6]
![2024-02-19T11:00:20.png][7]

四.栈的作用

任务切换需要保存所有寄存器,函数调用有些寄存器不需要保存,硬件中断,硬件和软件各保存一部分。

在使用STM32微控制器时,中断处理函数会自动将当前的现场信息保存到特定的栈中,这个栈被称为“中断栈”或者“内核栈”。当中断触发时,当前执行的指令会被中断处理函数替代,中断处理函数会将当前寄存器的值、标志位以及自动保存的其他相关信息保存在中断栈中。

具体来说,在STM32中,当发生中断时,处理器会自动完成以下步骤:

  1. 将当前正在执行指令的PC(程序计数器)压入中断栈。
  2. 保存当前执行指令的状态寄存器值(如CPSR/PSR)到中断栈。
  3. 保存其他相关寄存器的值,如R0-R12、LR(链接寄存器)等到中断栈。
  4. 将中断入口地址加载到PC中,开始执行中断服务程序。
  5. 中断服务程序执行完毕后,通过执行特定的中断返回指令(如“BX LR”)恢复现场。
  6. 恢复保存在中断栈中的相关寄存器的值,并将程序计数器(PC)指向之前保存的PC值,从中断处继续执行被中断的程序。

需要注意的是,不同的中断可能会有不同的优先级和特定的处理程序,因此对于每个中断,中断处理函数需要按照特定的处理方式进行编程,以确保正确保存和恢复现场。

在编程时,通常可以使用CMSIS(Cortex Microcontroller Software Interface Standard)提供的相关宏和函数来简化中断处理的实现,例如NVIC_SetPriority()来设置中断优先级,NVIC_EnableIRQ()来使能中断等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1456750.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTTP 请求 400错误

问题 HTTP 请求 400错误 详细问题 客户端发送请求 public static UserInfo updateUserInfo(UserInfo userInfo) {// 创建 OkHttpClient 对象OkHttpClient client new OkHttpClient();// 创建请求体MediaType JSON MediaType.parse("application/json; charsetutf-8&…

DS:栈和队列的相互实现

创作不易,感谢友友们三连!! 一、前言 栈和队列的相互实现是用两个栈去实现队列或者是用两个队列去实现栈,这样其实是把问题复杂化的,实际中没有什么应用价值,但是通过他们的相互实现可以让我们更加深入地理…

快乐学Python,通过用户和订单的数据分析,制定营销策略【实战】

在互联网行业中,电子商务领域绝对是数据分析用途最多的地方,各大电商平台都依赖数据分析帮助其挖掘用户订单增长机会。比如某宝的随手买一件,核心思路也就是根据用户的日常浏览内容及停留时间,以及订单的关联度来进行推荐的。 本篇…

ssm在线学习平台-计算机毕业设计源码09650

目 录 摘要 1 绪论 1.1 选题背景及意义 1.2国内外现状分析 1.3论文结构与章节安排 2 在线学习平台系统分析 2.1 可行性分析 2.2 系统业务流程分析 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析 2.5本章小结 3 在线学习平台总体设计 …

基于ant的图片上传组件封装(复制即可使用)

/*** 上传图片组件* param imgSize 图片大小限制* param data 上传数据* param disabled 是否禁用*/import React, { useState,useEffect } from react; import { Upload, Icon, message} from antd; const UploadImage ({imgSize 50,data { Directory: Image },disabled f…

文物保护系统守护历史岁月,成都青铜展科技闪耀

一、“吉金万里-中国西南青铜文明展”隆重开幕 1月27日,“吉金万里-中国西南青铜文明展”在成都金沙遗址博物馆向公众开放,奉上一场精彩的青铜文明“盛宴”。本次展览汇集了中国西南地区32家文博单位,以青铜器为代表的294件经典文物&#xf…

vue3+ts项目推荐(企业级0到1开发)H5

一、技术方案 基于 vue3typescript 中大型项目开发解决方案基于 vant 组件库快速构建H5界面解决方案基于 vue-router 的前端路由解决方案基于 vite 的 create-vue 构建vue3项目解决方案基于 pinia 的状态管理解决方案基于 pinia-plugin-persistedstate 状态持久化解决方案基于…

视频接入协议之MIPI

MIPI(Mobile Industry Processor Interface)是一种用于移动设备的串行接口标准,旨在提供高速、低功耗、低成本的接口解决方案。MIPI联盟是一个全球性的组织,致力于开发、推广和管理MIPI标准。 MIPI接口包括了多种协议和规范&…

typescript typeof操作符

ts typeof 操作符简介 在TypeScript中,typeof是一个操作符,用于获取一个值的类型。它可以与任何值一起使用,并返回一个描述该值类型的字符串。 typeof操作符在TypeScript中的用法与JavaScript中的用法非常相似。 如下,众所周知,在js中提供…

day03-股票数据报表与导出

day03-股票数据表报与导出 目标 理解涨幅榜业务需求;理解涨停跌停概念,并涨停跌停基本实现;理解涨停跌停SQL分析流程,并根据接口文档自定义实现;理解echarts基本使用;掌握easyExcel基本使用,并实现涨幅榜数据导出功能; 第一章 股票涨幅统计 1、涨幅榜…

【C++关键字】auto以及指针空值nullpr

📙 作者简介 :RO-BERRY 📗 学习方向:致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持 目录 前言1.类型别名思考2…

SQL110 插入记录(一)(插入和interval关键字的用法)

代码 insert into exam_record(uid,exam_id,start_time,submit_time,score) values(1001,9001,2021-09-01 22:11:12,2021-09-01 22:11:12interval 50 minute,90), (1002,9002,2021-09-04 07:01:02,null,null)知识点 interval关键字的用法 INTERVAL关键字一般使用格式为&#x…

牛客网 HJ76 尼克彻斯定理

题目&#xff1a; 思路&#xff1a; 主要是要找规律&#xff0c;即m^3&#xff08;m*m-m1j&#xff09;……&#xff0c;j从0每次递增2 然后就是注意输出格式 答案&#xff1a; #include <stdio.h> int main() {int m0; again:scanf("%d",&m);if(m<…

基于Springboot+Vue的在线考试系统源码

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 随着现代教育和职业培…

实习日志15

1.大改了一下界面 1.1.识别与验真 1.2.历史记录 2.改了几个bug 2.1.改json格式用JSON.stringify(value,null,2); 2.2.内嵌页面值与原页面值重复 2.3.验真条件判断 if (isVerifyCell.getValue() "不需要") {if (verifyResultCell.getValue() ! "未查验")…

ChromeDriver | 谷歌浏览器驱动下载地址 及 浏览器版本禁止更新

在使用selenoum时&#xff0c;需要chrome浏览器的版本和chrome浏览器驱动的版本一致匹配&#xff0c;才能进行自动化测试 一、ChromeDriver驱动镜像网址 国内可以搜到的谷歌浏览器下载地址里面最新的驱动器只有114版本的CNPM Binaries Mirror 在其他博主那找到了最新版本12X的…

Unity3d Mesh篇(一)— 创建简单三角面

文章目录 前言一、Mesh组成二、使用步骤三、效果四、总结 前言 Mesh&#xff08;网格&#xff09;是一种常用的3D图形表示方法&#xff0c;它由顶点&#xff0c;法线&#xff0c;UV 坐标&#xff0c;和三角形等组成。您可以使用 Mesh 类的方法来创建或修改网格&#xff0c;也可…

山西电力市场日前价格预测【2024-02-20】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2024-02-20&#xff09;山西电力市场全天平均日前电价为354.58元/MWh。其中&#xff0c;最高日前电价为579.21元/MWh&#xff0c;预计出现在18:30。最低日前电价为247.23元/MWh&#xff0c;预计…

金蝶云星空协同平台导出单据类型

文章目录 金蝶云星空协同平台导出单据类型需求具体操作 金蝶云星空协同平台导出单据类型 需求 导出A账套的其他出库单的单据类型 具体操作 然后可以再你要同步的数据中心打开应用执行脚本&#xff1a;

[] == ! [] 为什么返回 true ?

1. Undefined 、Null、0 比较 null null; // true null undefined; // true 0 -0; // true null 0; // false undefined 0; // false2. NaN 比较 NaN NaN; // false NaN与任何值比较都返回false(包括NaN)3. 字符串 与 数字…