![](https://img-blog.csdnimg.cn/direct/fc297d56c5c045968b1a7935ce863f61.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
FreeRTOS
文章平均质量分 93
本专栏详细介绍嵌入式广泛使用的实时操作系统FreeRTOS, 从0开始,逐步深入,为后续嵌入式开发做好准备!
未来可期,静待花开~
刚入行的技术猿一枚,记录学习过程中重要技术理论,谢谢关注,欢迎交流分享!
展开
-
FreeRTOS基础(一):FreeRTOS入门
裸机:直接对硬件资源的编程,所有功能函数放在主循环中,同⼀时间只能单⼀任务运行。裸机又称为前后台系统,前台系统指的中断服务函数,后台系统指的大循环,即应用程序。RTOS是指一类系统,如 FreeRTOS,uC/OS,RTX,RT-Thread 等,都是 RTOS 类操作系统。FreeRTOS 是一个免费的嵌入式实时操作系统,其开源、轻量级、可移植的特点使其成为许多嵌入式开发者的首选。在近几年的使用排名上位居前列。原创 2024-05-29 23:49:12 · 1481 阅读 · 2 评论 -
FreeRTOS基础(二):任务创建和删除的API函数(熟悉)
注意:每个任务都有属于自己的任务控制块,类似身份证任务栈栈顶,在任务切换时的任务上下文保存、任务恢复息息相关三、静态创建任务函数。原创 2024-05-30 01:57:19 · 380 阅读 · 0 评论 -
FreeRTOS基础(三):动态创建任务
通过上一讲我们知道动态创建任务的API函数如下:其实,我们需要定义的入口参数就是这个API函数的参数,提前定义好,然后传入参数,他就会自动的为我们创建好对应的任务,并且处于一种就绪态。其实就是函数名,我们知道函数名就是函数的入口地址,就是一个函数指针其实也就是函数名对应的字符串,要用双引号括起来动态创建任务,#define START_TASK_STACK_SIZE 128 //定义任务堆栈大小为128字(1字等于4字节)不需要传参,我们直接给NULL即可;原创 2024-06-01 11:02:47 · 1314 阅读 · 1 评论 -
FreeRTOS基础(四):静态创建任务
通过前面的讲解,我们知道动态创建任务的API函数如下:与动态创建的任务相比,只是后面两个参数发生了变化,其实这在前面讲过了,这是因为:静态创建任务时,任务的任务控制块以及任务的栈空间所需的内存,需用户分配提供,通常在bass段申请一个足够大的全局数组即可!该函数返回该任务的任务句柄!其实,我们需要定义的入口参数就是这个API函数的参数,提前定义好,然后传入参数,他就会自动的为我们创建好对应的任务,并且处于一种就绪态。其实就是函数名,我们知道函数名就是函数的入口地址,就是一个函数指针。原创 2024-06-01 13:16:53 · 1260 阅读 · 0 评论 -
FreeRTOS基础(五):任务挂起与恢复
FreeRTOS 的配置文件configMAX_SYSCALL_INTERRUPT_PRIORITY //定义了可以使用 FreeRTOS API 的最高中断优先级。configKERNEL_INTERRUPT_PRIORITY //定义了 FreeRTOS 内核的优先级我们知道,Stm32一共有10个系统中断(内核中断),FreeRTOS便可以对这些系统中断进行管理;第一个宏其实代表的是FreeRTOS可以管理的中断的最高的优先级;在 ARM Cortex-M 微控制器上,优先级数值越低,优先级越高。原创 2024-06-01 16:36:12 · 1152 阅读 · 0 评论 -
FreeRTOS基础(六):中断管理
1.1 中断的概念让CPU打断正常运行的程序,转而去处理紧急的事件(中断服务函数ISR),当中断事件处理完毕后,处理器可以恢复到中断前的状态,继续执行之前的程序,就叫中断。原创 2024-06-02 00:05:03 · 1144 阅读 · 0 评论 -
FreeRTOS基础(七):临界段代码保护及调度器挂起与恢复
临界段代码保护是直接屏蔽了中断(管理范围内),系统任务调度靠中断,ISR也靠中断,因此它的影响还是非常大的!!!二、任务调度器的挂起和恢复2.1 概念挂起就是暂停的意思,任务调度器挂起就是:任务不能再进行切换/调度,恢复就是任务调度器可以重新进行任务的切换。仅仅针对的是任务调度器,就是是否可以发生任务切换!2.2任务调度器的挂起和恢复API函数。原创 2024-06-02 10:40:40 · 1220 阅读 · 0 评论 -
FreeRTOS基础(八):FreeRTOS 时间管理
FreeRTOS 的相对延时函数vTaskDelay是一个常用的任务延时函数。相对延时:指每次延时都是从执行函数vTaskDelay()开始,直到延时指定的时间结束。它使当前任务进入阻塞状态一段指定的时间,以节拍(ticks)为单位。函数原型:void vTaskDelay( const TickType_t xTicksToDelay );参数:xTicksToDelay(将调⽤任务转换到就绪状态前保持在阻塞状态的滴答中断次数)参数: 指定要延迟的时钟节拍数。原创 2024-06-02 16:56:15 · 969 阅读 · 0 评论 -
FreeRTOS基础(九):FreeRTOS的列表和列表项
列表是 FreeRTOS 中的一个数据结构,概念上和链表有点类似,列表被用来跟踪 FreeRTOS中的任务。任务处在不同的状态下,就挂载在不同的列表中(比如就绪列表、阻塞列表、挂起列表)。而列表项就是存放在列表中的项目,一个列表项就关联着一个任务,可以说:列表代表处于某种状态的任务的集合,列表项就代表处于当前状态下的某一个任务。如下图所示:列表相当于链表,列表项相当于节点,FreeRTOS 中的列表是一个双向循环链表。原创 2024-06-02 23:32:20 · 987 阅读 · 0 评论 -
FreeRTOS基础(十):FreeRTOS任务状态查询API函数介绍
此函数用于获取指定任务的任务优先级,使用该函数需将宏置12.2.2 改变某个任务的任务优先级此函数用于改变某个任务的任务优先级,使用该函数需将宏为12.2.3 获取系统中任务的任务数量此函数用于获取系统中任务的任务数量。原创 2024-06-04 21:58:41 · 908 阅读 · 0 评论 -
FreeRTOS基础(十一):消息队列
假设有一个全局变量a = 0,现有两个任务都在对变量a进行自增操作(写操作),如下图所示:对于自增操作它不是原子操作,会经过一系列的步骤,最后才将自增后的结果写入到寄存器,如果任务2的优先级高于任务1,在任务1将自增后的2即将写入到a之前,任务2打断任务1进行自增操作,任务2拿到的是a为1,然后再进行的自增,两个任务执行完后自增其实只进行了一次数据无保护,导致数据不安全,当多个任务同时对该全局变量操作时,数据易受损!!原创 2024-06-07 00:52:09 · 614 阅读 · 0 评论 -
FreeRTOS基础(十二):信号量
本篇博客,我们详细介绍另一个重要的应用,信号量。目录一、信号量的简介1.0 举例理解1.1 FreeRTOS中的应用1.2 队列与信号量的对比二、二值信号量2.1 二值信号量的概念 2.2 二值信号量的API函数接口2.2.1 使用二值信号量的过程2.2.2 创建二值信号量函数2.2.3 释放二值信号量函数2.2.4 获取二值信号量函数2.3 二值信号量实验四、计数型信号量4.1 计数型信号量的概念4.2 计数型信号量的API函数接口4.2.1 使用计数信号量的过程4.2.2 创建计数信号量函数4.2.原创 2024-06-09 09:42:27 · 942 阅读 · 0 评论 -
FreeRTOS基础(十三):队列集
一个队列只允许任务间传递的消息为同一种数据类型,如果需要在任务间传递不同数据类型的消息时,那么就可以使用队列集!它的。原创 2024-06-09 14:52:11 · 1177 阅读 · 0 评论 -
FreeRTOS基础(十四):事件标志组
1.4 事件标志组与队列、信号量的区别。原创 2024-06-09 15:33:07 · 1071 阅读 · 0 评论