FreeRTOS任务调度

开启任务调度器

vTaskStartScheduler(); 无参数, 无返回值. 作用是用于启动任务调度器,任务调度器启动后, FreeRTOS 便会开始进行任务调度 .

如果允许了静态创建任务, 则创建空闲任务和创建定时器任务都会变为需要程序员手动实现创建.

1.创建空闲任务(动态创建)

创建成功, xReturn = pdPass; 

 2.创建软件定时器任务

3.关闭中断 

4.初始化全局变量

由上到下依次是:

  1. 下一个任务阻塞超时时间 = 最大值(0xffffffff).  
  2. 调度器运行状态 = pdTRUE.
  3. 系统计数器, 每中断一次, 这个值加一, 为系统提供心跳节拍, 这里初始值为0.

5.统计任务的运行时间

这里并没有用到, 只是留了一个接口. 以后再学怎么实现.

6.调用函数xPortStartScheduler()

上面的是调试功能, 也是没有实现的, 也是只留了一个接口函数. 

 这个开启第一个任务函数执行结束之后是不会返回的, 直接进入第一个任务开始执行. 

第二步, 配置PendSV和SYSTICK中断优先级
​​​​​

第三步, 配置SysTick中断

portNVIC_SYSTICK_LOAD_REG: 就是系统滴答定时器的重装载值寄存器, 倒数到0的时候触发中断, 这里是72k个数. 

configSYSTICK_CLOCK_HZ就是配置的系统时钟, 这里是72Mhz.

configTICK_RATE_HZ: 中断一次产生的频率, 这里是1000hz.

portNVIC_SYSTICK_CTRL_REG: 就是系统滴答定时器的控制及状态寄存器.

 

启动第一个任务. 

启动第一个任务

prvStartFirstTask();函数, 在端口启动调度器函数中最后执行的.

SVC中断服务函数

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

成为一名成功的互联网产品经理需要掌握哪些技能?

在现代互联网产业中,产品经理扮演着至关重要的角色。作为产品经理,需要不断地学习和提高自己的技能,以便为用户提供更佳的产品体验。以下是成为一名成功的互联网产品经理所需要掌握的技能: 1.产品设计技能 产品设计是产品经理的…

Linux 线程概念

文章目录 前言线程的概念线程的操作操作的原理补充与说明 前言 ① 函数的具体说明被放在补充与说明部分 ② 只说些基础概念和函数使用 线程的概念 网络回答:Linux 线程是指在 Linux 操作系统中创建和管理的轻量级执行单元。线程是进程的一部分,与进程…

使用数组创建链表的解决方案

因为在创建链表时用到了这种方法,后面发现这种方法创建链表做删除操作时不是很好,就打算删除,但是觉得这种方法可能对部分读者有参考意义,就基于数组创建链表的方法单独发了一篇,完整的~链表五大基础操作的实现方法可参…

2022 年全国职业院校技能大赛高职组云计算正式赛卷第二场-容器云

2022 年全国职业院校技能大赛高职组云计算赛项试卷 云计算赛项第二场-容器云 目录 2022 年全国职业院校技能大赛高职组云计算赛项试卷 【赛程名称】云计算赛项第二场-容器云 【任务 1】容器云平台搭建[5 分] 【任务 2】容器云应用部署: Docker Compose 编排部署[7.0…

Python新手上路:“用Python和Pygame创造你的流星雨”

文章目录 一、前言二、下载安装过程1.官网下载安装包2.安装python过程第一步第二步第三步第四步第五步安装完成 3.简单测试Python3.1 检查 Python 版本号3.2 打开 Python 解释器3.3 输入你的第一个代码3.4 运行 Python 脚本 4.安装Pygame4.1 cmd命令安装Pygame4.2 pip升级4.3 安…

thinkcmf 文件包含 x1.6.0-x2.2.3 已亲自复现

thinkcmf 文件包含 x1.6.0-x2.2.3 CVE-2019-16278 已亲自复现 漏洞名称漏洞描述影响版本 漏洞复现环境搭建漏洞利用 修复建议总结 漏洞名称 漏洞描述 ThinkCMF是一款基于PHPMYSQL开发的中文内容管理框架,底层采用ThinkPHP3.2.3构建。ThinkCMF提出灵活的应用机制&a…

k8s的二进制部署(二)网络

节点部署完成之后,节点的状态都是Notready,所以要部署k8s网络: k8s的网络类型: k8s中的通信模式: pod内部之间容器与容器之间的通信。 在同一个pod中的容器共享资源和网络,使用同一个网络命名空间,可以直…

设计模式(4)--对象行为(6)--备忘录

1. 意图 在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 这样以后可以将该对象恢复到原先保存的状态。 2. 三种角色 原发器(Originator)、备忘录(Memento)、负责人(Caretaker) 3. 优点 3.1 保持了封装边界。屏蔽了原发器的…

(13)Linux 进程的优先级、进程的切换以及环境变量等

前言:我们先讲解进程的优先级。然后讲解进程的切换,最后我们讲解环境变量,并且做一个 "让自己的可执行程序不带路径也能执行"的实践,讲解环境变量的到如何删除,最后再讲几个常见的环境变量。 一、进程优先级…

redis的搭建及应用(二)-redis的持久化策略

Redis的持久化策略 RDB RDB持久化是指在指定的时间间隔内将redis内存中的数据集快照写入磁盘,实现原理是redis服务在指定的时间间隔内先fork一个子进程,由子进程将数据集写入临时文件,写入成功后,再替换之前的文件,用二…

Spring对bean的管理

一.bean的实例化 1.spring通过反射调用类的无参构造方法 在pom.xml文件中导入坐标&#xff1a; <dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.29<…

云手机引领社交平台运营新潮流

在网络高度发展的今天&#xff0c;社交平台已经成为企业宣传推广的关键渠道之一。传统的社交运营方式已经无法满足效率的要求&#xff0c;云手机因而开始引领社交平台运营的新潮流。本文将深入探讨云手机如何重新定义社交平台运营&#xff0c;为用户和企业带来更为便捷、智能的…

w7数据库基础之mysql函数

系统函数 1.version() --mysql版本 2.user() --当前登录的数据库用户名system_user() 3.database() --当前使用的数据库名。schema() 4.datadir --数据库路径 5.version_compile_os 操作系统版本&#xff0c;like 后面可以使用%%进行模糊查询。 6.hostname 当前机器…

BFS解决多源最短路相关leetcode算法题

文章目录 1.01矩阵2.飞地的数量3.地图中的最高点4.地图分析 1.01矩阵 01矩阵 class Solution {int dx[4] {0,0,1,-1};int dy[4] {1,-1,0,0}; public:vector<vector<int>> updateMatrix(vector<vector<int>>& mat) {//正难则反&#xff0c;找0…

Apache Commons JCS缓存解决方案

第1章&#xff1a;引言 大家好&#xff0c;我是小黑&#xff01;今天&#xff0c;咱们来聊聊Apache Commons JCS&#xff0c;一个Java界里的缓存大杀器。缓存技术&#xff0c;对于提高应用性能来说&#xff0c;就像是给它加了一剂兴奋剂&#xff0c;能让数据访问变得快如闪电。…

Go 泛型之泛型约束

Go 泛型之泛型约束 文章目录 Go 泛型之泛型约束一、引入二、最宽松的约束&#xff1a;any三、支持比较操作的内置约束&#xff1a;comparable四、自定义约束五、类型集合&#xff08;type set&#xff09;六、简化版的约束形式七、约束的类型推断八、小结 一、引入 虽然泛型是…

uniCloud 创建项目

1. 新建项目 2. 新建云服务空间 若提示需登录&#xff0c;则登录 若提示需实名认证&#xff0c;则完成实名认证 3. 关联云服务空间 关联成功后

MySQL进阶之(一)逻辑架构

一、逻辑架构 1.1 逻辑架构剖析1.1.1 连接层1.1.2 服务层01、基础服务组件02、SQL Interface&#xff1a;SQL 接口03、Parser&#xff1a;解析器04、Optimizer&#xff1a;查询优化器05、Caches & Buffers&#xff1a; 查询缓存组件 1.1.3 引擎层1.1.4 存储层1.1.5 总结 1.…

UG NX二次开发(C++)-通过两点和高度创建长方体

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、前言2、采用UFun函数来创建长方体3、采用NXOpen方法实现两点和高度创建长方体4、验证1、前言 在UG NX二次开发时,我们通常会采用ufun函数来完成功能的开发,但是有些功能在ufun函数中不能找到…

[Redis实战]优惠券秒杀

三、优惠券秒杀 3.1 全局唯一ID 每个店铺都可以发布优惠券&#xff1a; 当用户抢购时&#xff0c;就会生成订单并保存到tb_voucher_order这种表中&#xff0c;而订单表如果使用数据库自增ID就存在一些问题&#xff1a; id的规律性太明显受单表数据量的限制 场景分析一&…