![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
FreeRTOS
文章平均质量分 94
LEODWL
To Do Something More and Fun......
展开
-
FreeRTOS的学习(十四)——PendSV异常
本文将从任务切换的角度出发,学习PendSV异常的相关概念。原创 2022-10-03 19:55:36 · 1248 阅读 · 0 评论 -
FreeRTOS的学习(十三)——任务创建
本文将分析阐述FreeRTOS的任务创建过程(以动态申请内存为例),并给出通用的步骤过程。原创 2022-09-06 23:06:54 · 844 阅读 · 0 评论 -
FreeRTOS的学习(十二)——任务调度器的开启
本文将分析阐述FreeRTOS的任务是如何开始调度。关于任务调度的内容由于涉及了很多底层的东西,所以相对晦涩难懂,尤其是很多的汇编语言以及地址,寄存器等等,记忆起来非常混乱。目前打算优先梳理逻辑过程,暂时忽视细节内容。...原创 2022-08-16 10:49:38 · 967 阅读 · 0 评论 -
FreeRTOS的学习(十一)——任务通知
FreeRTOS可以使用任务通知(Task Notifictions)这个功能来代替信号量、消息队列、事件标志组等。原创 2022-06-13 21:17:28 · 1392 阅读 · 1 评论 -
FreeRTOS的学习(十)——事件标志组
FreeRTOS可以使用信号量来同步任务,但是信号量的方法只能与单个的事件或任务进行同步。有时候某个任务可能会需要与多个事件或任务进行同步,此时信号量就无能为力了。FreeRTOS 为此提供了一个可选的解决方法,那就是事件标志组。.........原创 2022-06-13 16:17:52 · 1649 阅读 · 0 评论 -
FreeRTOS的学习(九)——软件定时器
FreeRTOS 提供了定时器功能,不过是软件定时器,软件定时器的精度肯定没有硬件定时器那么高,但是对于普通的精度要求不高的周期性处理的任务来说够了。原创 2022-06-10 14:52:56 · 1033 阅读 · 0 评论 -
FreeRTOS的学习(八)——4.互斥信号量
信号量可以认为是队列的一种表达形式,他的存在给予了任务和任务,任务和中断之间的资源访问形式。> 1. 信号量常被用于控制对共享资源的访问和任务同步,可以对资源的变化进行计数,或者判断是否使用某资源等。> 2. 另外信号量还常用于任务同步,用于任务于任务或者中断与任务之间的同步。FreeRTOS中具有非常多的信号量,比如计数信号量,二值信号量,互斥信号量和递归互斥信号量,其存在在某些情况下亦可以用队列的功能去替换。......原创 2022-05-30 15:01:07 · 1443 阅读 · 0 评论 -
FreeRTOS的学习(八)——3.优先级翻转问题
前面提到了二值信号量的概念,但是在多个不同优先级的任务想要同时Take和Give二值信号量时,往往会因为被占用的问题,使得高优先级任务的执行顺序与低优先级任务一样。这种情况被称为优先级翻转,优先级翻转在可剥夺内核中是非常常见的,在实时系统中不允许出现这种现象,这样会破坏任务的预期顺序,可能会导致严重的后果。......原创 2022-05-30 09:47:12 · 738 阅读 · 0 评论 -
FreeRTOS的学习(八)——2.计数型信号量
信号量可以认为是队列的一种表达形式,他的存在给予了任务和任务,任务和中断之间的资源访问形式。> 1. 信号量常被用于控制对共享资源的访问和任务同步,可以对资源的变化进行计数,或者判断是否使用某资源等。> 2. 另外信号量还常用于任务同步,用于任务于任务或者中断与任务之间的同步。FreeRTOS中具有非常多的信号量,比如计数信号量,二值信号量,互斥信号量和递归互斥信号量,其存在在某些情况下亦可以用队列的功能去替换。......原创 2022-05-23 16:13:37 · 785 阅读 · 0 评论 -
FreeRTOS的学习(八)——1.二值信号量
信号量可以认为是队列的一种表达形式,他的存在给予了任务和任务,任务和中断之间的资源访问形式。> 1. 信号量常被用于控制对共享资源的访问和任务同步,可以对资源的变化进行计数,或者判断是否使用某资源等。> 2. 另外信号量还常用于任务同步,用于任务于任务或者中断与任务之间的同步。FreeRTOS中具有非常多的信号量,比如计数信号量,二值信号量,互斥信号量和递归互斥信号量,其存在在某些情况下亦可以用队列的功能去替换。......原创 2022-05-23 11:21:59 · 1541 阅读 · 0 评论 -
FreeRTOS的学习(七)——3.队列出队源码分析
队列在FreeRTOS中起到比较重要的作用,主要用于任务之间消息的传递,取代了裸机时代中的全局变量交互功能。队列的机制实现了任务与任务、任务与中断之间的消息传递。原创 2022-05-22 21:09:34 · 1346 阅读 · 0 评论 -
FreeRTOS的学习(七)——2.队列入队源码分析
队列在FreeRTOS中起到比较重要的作用,主要用于任务之间消息的传递,取代了裸机时代中的全局变量交互功能。队列的机制实现了任务与任务、任务与中断之间的消息传递。原创 2022-05-16 21:06:30 · 1107 阅读 · 0 评论 -
FreeRTOS的学习(七)——1.队列概念
队列在FreeRTOS中起到比较重要的作用,主要用于任务之间消息的传递,取代了裸机时代中的全局变量交互功能。队列的机制实现了任务与任务、任务与中断之间的消息传递。原创 2022-05-13 22:17:51 · 1375 阅读 · 0 评论 -
FreeRTOS的学习(六)——系统时钟
本节介绍的是系统时钟,也就是FreeRTOS的时钟节拍是怎么来的,并且会介绍定时器中断的函数内部实现。原创 2022-05-06 21:03:28 · 9399 阅读 · 0 评论 -
FreeRTOS的学习(五)——系统延时
在前面的学习过程中大概了解了FreeRTOS的每个任务可以相互独立的编程,通过系统定时中断进行任务级别的切换。其中延时函数vTaskDelay()作为FreeRTOS的延时函数,其也具有任务切换的功能,即延时函数会将当前任务放入阻塞态等待延时时间结束,然后重新将该任务放入就绪态,按优先级运行。freeRTOS的系统延时又分为两种模式:一种是相对模式,容易由于任务主体时间影响而导致任务执行的时间太长。另一种是绝对模式,绝对模式可以很好的解决相对模式的问题,因为其延时时间是一个周期值,即任务周期运行的时间,原创 2022-05-04 00:49:39 · 6893 阅读 · 0 评论 -
温故知新(三)——static 关键字详解
目录1 什么是static?1.1 static 的引入1.2 静态数据的存储2 在 C中static的作用2.1 总体而言2.2 静态变量与普通变量2.3 静态局部变量有以下特点1 什么是static?static 是 C/C++ 中很常用的修饰符,它被用来控制变量的存储方式和可见性。1.1 static 的引入我们知道在函数内部定义的变量,当程序执行到它的定义处时,编译器为它在栈上分配空间,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下转载 2022-05-02 17:49:38 · 127 阅读 · 0 评论 -
温故知新(二)——volatile 关键字详解
目录1 为什么用volatile?2 volatile 指针3 多线程下的volatile1 为什么用volatile?C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 memory barrier。这是 BS 在 “The C++ Programming Language” 对 volatile 修饰词的说明:A volatile specifier is a hint to a compiler that an object may chan转载 2022-05-02 17:21:50 · 307 阅读 · 0 评论 -
宏定义函数与普通函数的区别
可以在前面的系列文章中看到,FreeRTOS 的 头文件中定义了大量的宏定义函数。单单从形式看宏定义的函数和普通函数并无太大的区别,但事实上两者还是有很大不同。原创 2022-04-18 16:55:46 · 3409 阅读 · 0 评论 -
FreeRTOS的学习(四)——列表
最近因为疫情,已经在家一个星期多了,由于状态不佳,也是在最近重新拾起了FreeRTOS的学习,学习的过程着实路长且艰 ,不过待到多年后回首,一定会感谢自己现在的付出。话不多说,这几天学了FreeRTOS的列表的组成和一些操作机制,对于数据结构(本科的时候学过,当时学的贼认真的一门课,虽然最后考试也才92,不过没到三年就忘的差不多了^-^)的内容需要重新学习,这个过程也是相对难熬的……...原创 2022-04-18 16:40:43 · 1551 阅读 · 0 评论 -
温故知新(一)——基于 RTOS 的软件开发理论
目录前言1 RTOS的特点2 任务设计2.1 任务的特性2.2 任务划分的方法2.2.1 设备依赖性任务2.2.2 关键任务2.2.3 紧迫任务2.2.4 数据处理任务2.2.5 触发条件相同的任务2.2.6 运行周期相同的任务2.2.7 顺序操作任务2.3 任务的可调度性分析2.4 任务类型2.4.1 单次执行的任务2.4.2 周期性执行的任务2.4.3 事件触发执行的任务2.5 任务优先级3 公共函数的设计3.1 互斥调用3.2 可重入设计3.3 运行效率4 中断服务程序的设计4.1 中断优先级4.2转载 2022-04-06 19:34:09 · 1070 阅读 · 0 评论 -
FreeRTOS的学习(三)——中断机制
FreeRTOS的任务优先级在之前已经进行了比较详尽的讨论,对此也有了一个清晰的认知。然而FreeRTOS的优先级始终是针对其本身的任务而言的,那么与STM32的内核的中断控制优先级之间是有什么联系嘛?还是有其他的一些方式将FreeRTOS与STM32的中断进行融合呢?...原创 2022-03-30 17:22:01 · 9516 阅读 · 2 评论 -
FreeRTOS的学习(二)——任务优先级问题
今天开始学了FreeRTOS的配置文件,也就是系列文章(一)里的FreeRTOSConfig,h,系统学习了里面的配置选项的含义。一、可使用的最大优先级这是我今天看完配置文件后存在的一个主要的疑惑,为什么设置的最大是32个优先级,虽然一般十来个优先级就足够使用了,因为多个任务能共用一个优先级,但是依旧让我存在一些疑惑:最大优先级能不能更多?有什么限制条件?二、寻找问题通过查询配置的宏configMAX_PRIO...原创 2022-03-23 15:13:40 · 6263 阅读 · 2 评论 -
FreeRTOS的学习(一)——STM32上的移植问题
最近完成了论文方面的任务,要逐步开始迈向技术学习的新阶段了,接下来准备学习一下操作系统。以前没有对这东西多感冒,因为自己基于arm写的代码都是在中断里的,基本上两个中断基本就解决了项目所需。但是随着产品化的想法逐渐深入,对于目标的实现也不仅仅是完成目标本身了,需要加入更多的可视界面以及交互功能。那么如何在多个功能中能够进行可靠的任务调度切换呢,RTOS就逐步进入了我的视野。选择FreeRTOS的来优先学习的原因也很简单,目前其市场占有率很高,其次是相对内容比较简单,没有复杂的东西。今天花了点时间把移植的过原创 2022-03-21 13:48:09 · 2426 阅读 · 0 评论