![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
FreeRTOS学习之路
Newbie_H
这个作者很懒,什么都没留下…
展开
-
学习FreeRTOS之路(八):消息队列及其常用函数介绍
消息队列1.消息队列的基本概念队列又称消息队列,是一种常用于任务间通信的数据结构,队列可以在任务与任务间、中断和任务间传递信息,实现了任务接收来自其他任务或中断的不固定长度的消息,任务能够从队列里面读取消息,当队列中的消息是空时,读取消息的任务将被阻塞,用户还可以指定阻塞的任务时间 xTicksToWait,在这段时间中,如果队列为空,该任务将保持阻塞状态以等待队列数据有效。当队列中有新消息时,被阻塞的任务会被唤醒并处理新消息;当等待的时间超过了指定的阻塞时间,即使队列中尚无有效数据,任务也会自动从阻塞原创 2020-08-26 13:55:01 · 2080 阅读 · 0 评论 -
学习FreeRTOS之路(七):任务管理及常用函数方法介绍
任务的基本概念从系统的角度看,任务是竞争系统资源的最小运行单元。FreeRTOS 是一个支持多任务的操作系统。在 FreeRTOS 中,任务可以使用或等待CPU、使用内存空间等系统资源,并独 立 于 其 它 任 务 运 行 , 任 何 数 量 的 任 务 可 以 共 享 同 一 个 优 先 级 , 如 果 宏configUSE_TIME_SLICING 定义为 1,处于就绪态的多个相同优先级任务将会以时间片切换的方式共享处理器。简而言之: FreeRTOS 的任务可认为是一系列独立任务的集合。每个任务在原创 2020-08-18 19:23:55 · 954 阅读 · 0 评论 -
学习FreeRTOS之路(六):FreeRTOS 的启动流程
使用FreeRTOS的常用编程思路第一种:万事俱备法在 main 函数中将硬件初始化,RTOS 系统初始化,所有任务的创建这些都弄好,最后在启动任务调度器1 int main (void)2 {3 /* 硬件初始化 */4 HardWare_Init(); (1)5 6 /* RTOS 系统初始化 */7 RTOS_Init(); (2)8 9 /* 创建任务 1,但任务 1 不会执行,因为调度器还没有开启 */ (3)10 RTOS_TaskCreate(Task1);11 /*原创 2020-08-16 09:01:54 · 3912 阅读 · 1 评论 -
学习FreeRTOS之路(五):使用FreeRTOS 静态与动态创建任务
静态创建1.定义任务函数(一个无限循环且不带返回值的函数)任务必须是一个死循环,否则任务将通过 LR 返回,如果 LR 指向了非法的内存就会产生 HardFault_Handler,而 FreeRTOS 指向一个死循环,那么任务返回之后就在死循环中执行,这样子的任务是不安全的。所以避免这种情况,任务一般都是死循环并且无返回值的。如果任务,执行一次之后就进行删除,则不影响系统运行,所以,只执行一次的任务在执行完毕要记得及时删除。任务里面的延时函数必须使用 FreeRTOS 里面提供的延时函数,并不能原创 2020-08-15 10:57:07 · 4544 阅读 · 2 评论 -
学习FreeRTOS之路(四):FreeRTOS内核的一些基础介绍
目前,还是先决定笼统概括一下吧,接下来的笔记将会偏代码应用,之后的运行机制打算新开一个专栏什么是临界段的保护临界段用一句话概括就是一段在执行的时候不能被中断的代码段。在 FreeRTOS 里面,这个临界段最常出现的就是对全局变量的操作,全局变量就好像是一个马桶,你我都可以用,但不能同时使用。那么什么情况下临界段会被打断?一个是系统调度,还有一个就是外部中断。在FreeRTOS,系统调度,最终也是产生 PendSV 中断,在 PendSV Handler 里面实现任务的切换,所以还是可以归结为中断。既原创 2020-08-14 11:23:10 · 559 阅读 · 0 评论 -
学习FreeRTOS之路(三):任务的定义与任务切换的实现
什么是任务在裸机系统中,系统的主体就是 main 函数里面顺序执行的无限循环,这个无限循环里面 CPU 按照顺序完成各种事情。在多任务系统中,我们根据功能的不同,把整个系统分割成一个个独立的且无法返回的函数,这个函数我们称为任务。 void task_entry (void *parg) { /* 任务主体,无限循环且不能返回 */ for (;;) { /* 任务主体代码 */ } }程序 #include "FreeRTOS.h" #include "task.h"原创 2020-08-13 16:25:57 · 870 阅读 · 0 评论 -
学习FreeRTOS之路(二):逻辑系统与多任务系统(RTOS)的介绍及区别
裸机系统裸机系统通常分成轮询系统和前后台系统轮询系统:轮询系统即是在裸机编程的时候,先初始化好相关的硬件,然后让主程序在一个死循环里面不断循环,顺序地做各种事情。轮询系统是一种非常简单的软件结构,通常只适用于那些只需要顺序执行代码且不需要外部事件来驱动的就能完成的事情。如果加入了按键操作等需要检测外部信号的事件,用来模拟紧急报警,那么整个系统的实时响应能力就不会那么好了。前后台系统:相比轮询系统,前后台系统是在轮询系统的基础上加入了中断。外部事件的响应在中断里面完成,事件的处理还是回到轮询系统中原创 2020-08-12 20:21:28 · 999 阅读 · 0 评论 -
学习FreeRTOS之路(一):RTOS基础介绍,与FreeRTOS的变量类型、命名规范
前言:依照惯例,还是自我发挥几句,ESP32的学习大致告一段落,正如我的博客更新状态,目前正在ESP32项目实践。在裸机系统里,所有的操作都是在一个无限的大循环中实现的。编写代码的过程中,确实觉得功能和功能之间的架构,关系,时序等,单纯的用裸机系统来运行太过麻烦,代码、算法等也很臃肿繁琐。在esp32技术交流群的大触的建议下,我开始接触RTOS(Real Time Operating System 实时操作系统)。顺便开一个新专栏,记录点笔记。以上…基础介绍为什么要学习RTOS?在裸机系统中,原创 2020-08-12 10:01:47 · 2478 阅读 · 1 评论