启动流程和切换流程

启动流程

startup_stm32f103xb system_stm32f1xx syscalls components timer scheduler_up main Reset_Handler() 服务入口 __libc_init_array() entry() rtthread_startup() rt_hw_board_init() 硬件初始化 rt_system_timer_init() 硬定时器初始化 SysTick中断SysTick_Handler rt_system_scheduler_init() 调度器初始化 rt_application_init() main_thread_entry() main() startup_stm32f103xb system_stm32f1xx syscalls components timer scheduler_up main 时序图模式

调度流程

drv_common clock scheduler_comm scheduler_up context_gcc SysTick_Handler() 触发systick 中断 rt_tick_increase() rt_sched_unlock_n_resched() rt_schedule() rt_hw_context_switch() 触发PendSV 中断 PendSV_Handler() switch_to_thread() PendSV 中切换任务 drv_common clock scheduler_comm scheduler_up context_gcc 时序图模式

任务切换过程

在这里插入图片描述
在这里插入图片描述

  1. 当TaskA在运行中systick中断触发了
  2. 进入systick中断 通过设置ICSR的28BIT 挂起PendSVC,systick中断执行完后
  3. 进入PendSV中断
  4. 当发送中断抢占PendSV中断
  5. 中断服务执行完后,PendSV继续执行并切换任务。
  6. TaskB在运行

一般 PendSV和systick中断优先级都最低,防止抢占中断。

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

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

相关文章

C语言·分支和循环语句(超详细系列·全面总结)

前言:Hello大家好😘,我是心跳sy,为了更好地形成一个学习c语言的体系,最近将会更新关于c语言语法基础的知识,今天更新一下分支循环语句的知识点,我们一起来看看吧~ 目录 一、什么是语句&#xf…

C++ 的 SFINAE(Substitution Failure Is Not An Error) 机制和类型萃取(type traits)

C 的 SFINAE(Substitution Failure Is Not An Error) 机制和类型萃取(type traits) flyfish Substitution Failure Is Not An Error 翻译为中文是“替换失败不是错误”。它是 C 模板编程中的一个重要概念,指在模板实…

Bootstrap 导航栏:设计、定制与实现

Bootstrap 导航栏:设计、定制与实现 Bootstrap 是一个流行的前端框架,它提供了丰富的组件和工具,帮助开发者快速构建响应式和移动优先的网页。在 Bootstrap 的众多组件中,导航栏(Navbar)是一个核心元素&am…

linux配置podman阿里云容器镜像加速器

1.下载podman yum install -y podman systemctl status podman systemctl start podman 2.获取阿里云个人容器镜像加速器地址 访问阿里云官网:首先,您需要访问阿里云(Alibaba Cloud)的官方网站。阿里云官网的URL是:…

使用 Arthas 进行 Base64 编码和解码

引言 在处理数据传输和存储时,经常需要对数据进行编码和解码。Base64 是一种常用的编码方式,它可以将二进制数据转换成64个可打印的字符,从而方便在文本环境中传输和存储。Arthas 提供了强大的 Base64 编码和解码功能,使得在 Jav…

OS:处理机进程调度

1.BackGround:为什么要进行进程调度? 在多进程环境下,内存中存在着多个进程,其数目往往多于处理机核心数目。这就要求系统可以按照某种算法,动态的将处理机CPU资源分配给处于就绪状态的进程。调度算法的实质其实是一种…

Django实战项目之进销存数据分析报表——第二天:项目创建和 PyCharm 配置

在上一篇博客中,我们讨论了如何搭建一个全栈 Web 应用的开发环境,包括 Python 环境的创建、Django 和 MySQL 的安装以及前端技术栈的选择。现在,让我们继续深入,学习如何在 PyCharm 中创建一个新的 Django 项目并进行配置。 一…

汇编 -- ARM汇编之 .inst指令与udf指令使用

ARM 汇编中的 .inst 与 udf 指令 技术背景 在ARM汇编编程中&#xff0c;有时需要使用一些标准汇编语言不支持的特殊指令&#xff0c;或需要在代码中插入断点或生成故意的异常以便进行调试和错误处理。.inst和udf指令在这些场景中非常有用。 .inst 指令 语法 .inst <mac…

对于品牌方来说,小红书探店应该怎么做?

小红书是中国最大的生活分享社交平台之一&#xff0c;它现在不仅仅是一个购物推荐平台&#xff0c;也是一个探店的好去处。 用户在网络上看到一家心仪的店铺&#xff0c;却又无法亲身到访&#xff0c;对店铺的产品存疑&#xff0c;这时候就会在小红书搜索具体的相关店铺信息。 …

MacOS解决安装pycurl的问题 no such file or directory: ‘/usr/lib/libcurl.@libext@‘

背景 芯片&#xff1a;MacBook Pro M3Mac OS: 14.1Python 2.7pip20.3.4 执行pip install pycurl7.19.0总是报错&#xff0c;例如&#xff1a; Looking in indexes: http://mirrors.aliyun.com/pypi/simple/ Collecting pycurl7.19.0Downloading http://mirrors.aliyun.com/p…

BUG ImportError: cannot import name ‘QAction‘ from ‘PySide6.QtWidgets‘

BUG ImportError: cannot import name ‘QAction’ from ‘PySide6.QtWidgets’ 环境 PySide6 6.7.2详情 在参考 PyQt5 的代码写 Pyside6 的右键菜单时遇到的错误。 错误代码 from PySide6.QtWidgets import QAction错误原因&#xff1a; 在PySdie6中&#xf…

【代码随想录】【算法训练营】【第58天 4】 [卡码104]建造最大岛屿

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 卡码网。 day 58&#xff0c;周四&#xff0c;ding~ 题目详情 [卡码104] 建造最大岛屿 题目描述 卡码104 建造最大岛屿 LeetCode类似题目827 最大人工岛 解题思路 前提&#xff1a; 思路&#xff1a; 重点…

Rust编程-模式匹配

模式&#xff1a; 用来匹配类型结构 组成&#xff1a;字面量、解体的数组、元组、枚举、结构体 、变量、通配符、占位符等组件组成 模式匹配的作用&#xff1a; 模式与match或其他工具配合使用可以更好控制流程 match分支&#xff1a; match 值 {模式 > 表达式 } match分支…

【LeetCode】从前序与中序遍历序列构造二叉树

目录 一、题目二、解法完整代码 一、题目 给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 示例 1: 输入: preorder [3,9,20,15,7], inorder [9…

在西藏上大学是一种什么体验?如何解决语言问题?

在西藏地区上大学是一种独特而难忘的经历&#xff0c;它不仅提供了接触壮丽自然风光和深入了解藏族文化的机会&#xff0c;也带来了适应高原气候和生活方式的挑战。学生将在这里体验到丰富的教育资源和学术研究素材&#xff0c;同时在生活和人际交往中培养适应能力和独立性。这…

密码学基础-Hash、MAC、HMAC 的区别与联系

密码学基础-Hash、MAC、HMAC 的区别与联系 Hash Hash 是一种从一段数据中创建小的数字“指纹”的方法。就像一个人的指纹代表一个人的信息一样&#xff0c;Hash 对输入的数据进行整理&#xff0c;生成一个代表该输入数据的“指纹” 数据。通常该指纹数据也可称之为摘要、散列…

文件包含漏洞: 函数,实例[pikachu_file_inclusion_local]

文件包含 文件包含是一种较为常见技术&#xff0c;允许程序员在不同的脚本或程序中重用代码或调用文件 主要作用和用途&#xff1a; 代码重用&#xff1a;通过将通用函数或代码段放入单独的文件中&#xff0c;可以在多个脚本中包含这些文件&#xff0c;避免重复编写相同代码。…

RabbitMQ的学习和模拟实现|Protobuf的介绍和简单使用

protbuf的介绍和简单使用 项目仓库&#xff1a;https://github.com/ffengc/HareMQ protobuf的安装&#xff1a;README-cn.md#环境配置 基于Protobuf的一个小项目&#xff1a;基于protobuf和httplib的在线通讯录项目框架&#xff5c;Protobuf应用小项目 protobuf是什么 Pro…

TinyVue:与 Vue 交往八年的组件库

本文由体验技术团队莫春辉老师原创~ 去年因故停办的 VueConf&#xff0c;今年如约在深圳举行。作为东道主 & 上届 VueConf 讲师的我&#xff0c;没有理由不来凑个热闹。大会结束后&#xff0c;我见裕波在朋友圈转发 Jinjiang 的文章《我和 Vue.js 的十年》&#xff0c;我就…

openlayers 3d 地图 非三维 立体地图 行政区划裁剪 地图背景

这是实践效果 如果没有任何基础 就看这个专栏&#xff1a;http://t.csdnimg.cn/qB4w0 这个专栏里有从最简单的地图到复杂地图的示例 最终效果&#xff1a; 线上示例代码&#xff1a; 想要做这个效果 如果你的行政区划编辑点较多 可能会有卡顿感 如果出现卡顿感需要将边界点相应…