FreeRtos第一个task是怎么run起来的

第一个task是怎么起来的呢?分析完vTaskStartScheduler,就会有答案了。

那vTaskStartScheduler()干了啥呢?

一、创建prvIdleTask task

二、xTimerCreateTimerTask里创建prvTimerTask task

三、初始化一些全局变量

3.1

 xNextTaskUnblockTime是下一个task运行的tick数

xSchedulerRunning 是否开始调度器

xTickCount 当前系统tick数

四、重点的重点是xPortStartScheduler函数

4.1 设置PendSV和SysTick的中断优先级

 portNVIC_SYSPRI3_REG的定义:

0xe000ed20在M7里对应的寄存器叫做 System Handler Priority Register 3,是控制PendSV和SysTick中断优先级的寄存器:

4.2vPortSetupTimerInterrupt 中设置中断频率和使能中断

这两个寄存器定义:

 0xe000e014 在M7里是SysTick Reload Value Register寄存器

 

0xe000e010 在M7里面是SysTick Control and Status Register 寄存器

 

4.3 配置FPU

4.4 prvPortStartFirstTask 开启第一个task 

下面是一个多核的启动第一个task的例程

这里只分析了多核中的一个核,其余一样,不同的核里0x40198004中的内容不一样,debug如下:

芯片手册里也有讲到:

 

4.5 pendsv中断 vPortSVCHandler 

prvPortStartFirstTask里面出发svc中断后,会跳转到vPortSVCHandler

此时r14里是什么呢,在任务创建章节里有提到:FreeRtos任务创建分析-CSDN博客 

此时r14的值是

 0xfffffffd是啥意思呢?

表示回归到thread 模式,并使用任务栈 

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

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

相关文章

业务数据治理体系化实施流程学习总结

目录 一、业务数据治理实施流程 步骤 1:发现问题和制定目标 步骤 2:针对问题进行拆解,设计可衡量的指标 步骤 3:制定解决SOP和检查研发标准规范 步骤 4:推广运营,以拿结果为核心目标 步骤 5&#xff…

navicat某些表为什么不按主键排序

不知道大家注没注意过navicat的这种情况 为什么不是按主键排序呢 我们来全表扫描看下他的执行计划 explain select * from orsql3; 可以发现不是全表扫描而是索引树扫描,由此得知了共性,不按主键顺序排序的表,肯定是在二级索引上就保存着全部…

计算机网络体系的形成

目录 1、开放系统互连参考模型OSI/RM 2、两种国际标准 3、协议与划分层次 4、网络协议的三要素 5、划分层次 (1)文件发送模块使两个主机交换文件 (2)通信服务模块 (3)接入网络模块 6、分层带来的好…

pytorch 模型量化quantization

pytorch 模型量化quantization 1.workflow1.1 PTQ1.2 QAT 2. demo2.1 构建resnet101_quantization模型2.2 PTQ2.3 QAT 参考文献 pytorch框架提供了三种量化方法,包括: Dynamic QuantizationPost-Training Static Quantization(PTQ&#xff0…

随心玩玩(十)git

写在前面:研究生一年多了,一直浑浑噩噩的,在深度学习的泥潭挣扎了好久,终于走出了精神内耗的泥潭…好久没有写博客了,决定重新捡起来…记录一下学习吧~ 之前写了一篇git的博客,【github 从0开始的基本操作…

Ubuntu 22.04安装mysql-server 8.0.34(使用bundle.tar)

《Ubuntu 20.04 使用mysql-server_8.0.31-1ubuntu20.04_amd64.deb-bundle.tar安装MySQL 8.0.31》是我以前写的博客。 https://downloads.mysql.com/archives/community/是社区版的官网,可以选择版本下载。 sudo wget -c https://downloads.mysql.com/archives/ge…

【数据库原理】函数依赖、三范式、视图、事务、数据库设计(概念、逻辑、物理结构设计,实施)、数据流图、数据字典、存储过程、触发器、备份与还原【我统统拿下!】

函数依赖 函数依赖是关系数据库中的重要概念,用于描述关系中属性之间的依赖关系。 在关系数据库中,如果关系 R 中的某个属性或属性组的值能够唯一确定关系中其他属性的值,那么我们就说这个属性或属性组对其他属性具有函数依赖关系。 举个例…

分享84个节日PPT,总有一款适合您

分享84个节日PPT,总有一款适合您 84个节日PPT下载链接:https://pan.baidu.com/s/1TSIGR8ZIytnTKmQRa0rGnw?pwd6666 提取码:6666 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,收集整理更不易…

ADC欠采样以及应用案例

欠采样与其优劣 ADC(Analog-to-Digital Converter)的欠采样是指在信号的采样过程中,采样频率低于被采样信号的最高频率的情况。这意味着采样率不足以捕捉到信号的完整信息,而是以较低的频率对信号进行采样。 欠采样在某些特定情…

使用Java语言实现变量互换

一、 java运算 通过异或运算符实现两个变量的互换 import java.util.Scanner;public class ExchangeValueDemo {public static void main(String[] args){try (Scanner scan new Scanner(System.in)) {System.out.println("请输入A的值:");long A sca…

分割YooChoose数据集为YooChoose1/4、YooChoose1/64

目的 源YooChoose数据集十分庞大,有上千万级别的数据,在测试验证模型性能时加载起来十分费劲。 脚本思路 使用数据集中session_id作为滤网对源数据进行过滤,过滤出2百万个不同的session_id作为训练集。 具体步骤 (1)…

TA-Lib学习研究笔记(二)——Overlap Studies上

TA-Lib学习研究笔记(二)——Overlap Studies 1. Overlap Studies 指标 [BBANDS, DEMA, EMA, HT_TRENDLINE, KAMA, MA, MAMA, MAVP, MIDPOINT, MIDPRICE, SAR, SAREXT, SMA, T3, TEMA, TRIMA, WMA]2.数据准备 get_data函数参数(代码&#x…

javaee实验:文件上传及截器的使用

目录 文件上传ModelAttribute注解实验目的实验内容实验过程项目结构编写代码结果展示 文件上传 Spring MVC 提供 MultipartFile 接口作为参数来处理文件上传。 MultipartFile 提供以下方法来获取上传的文件信息:  getOriginalFilename 获取上传的文件名字&#x…

HttpRunner自动化测试之响应中文乱码处理

响应中文乱码: 当调用接口,响应正文返回的中文是乱码时,一般是响应正文的编码格式不为 utf-8 导致,此时需要根据实际的编码格式处理 示例: 图1中 extract 提取title标题,output 输出 title 变量值&#x…

【Unity动画】状态机中层的融合原理与用法详解

1. 状态机概念介绍 在Unity中,动画状态机(Animator State Machine)是一种强大的工具,用于控制游戏对象的动画行为。动画状态机由多个动画状态Animation和过渡条件Transition、层组成!而层(Layers&#xff…

中序和前/后序遍历构造二叉树———通用做法

1. 前序和中序遍历 **思路:我们每一次一定可以根据递归确定根节点是哪个,就是前序第一个数,然后找中序遍历这个点,看左子树有几个节点,右子树有几个节点,然后就可以根据节点个数,递归左子树和右…

Swing程序设计(7)JPane面板,滑动面板

文章目录 前言一、JPane面板,滑动面板是什么?二、实操展示 1.JPane面板2.JScrollPane面板总结 前言 该篇博客介绍Java的Swing程序中JPane面板以及,滑动面板的使用。面板的使用,各个组件在不同的面板上被不同地摆放,让插…

Rust 语言:认识 Rust

本心、输入输出、结果 文章目录 Rust 语言:认识 Rust前言Rust的特点Rust LOGO Rust 在IT行业的应用前景Rust 是一门系统级编程语言相关链接花有重开日,人无再少年实践是检验真理的唯一标准 Rust 语言:认识 Rust 编辑:简简单单 Onl…

【ArcGIS Pro微课1000例】0039:制作全球任意经纬网的两种方式

本文讲解在ArcGIS Pro中制作全球任意经纬网的两种方式。 文章目录 一、生成全球经纬网矢量1. 新建地图加载数据2. 创建经纬网矢量数据二、布局生成经纬网1. 新建布局2. 创建地图框2. 创建经纬网一、生成全球经纬网矢量 以1:100万比例尺地图分幅为例,创建经差6、维差4的经纬网…

51. N 皇后

题目介绍 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案…