![](https://img-blog.csdnimg.cn/direct/9a85cdb918f841f798970005603a5732.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
FreeRTOS
文章平均质量分 91
莫愁千里路,自由到来风
江河jh
来自 北纬43°的嵌入式工程师成长之路
展开
-
FreeRTOS---------内核
首先看一下 FreeRTOS 的名字,可以分为两部分:“Free”和“RTOS”,“Free”就是免费的、 自由的、不受约束的意思,“RTOS”全称是 Real Time Operating System,中文名就是实时操作 系统,要注意的是,RTOS 并不是值某一特定的操作系统,而是指一类操作系统,例如,µC/OS, FreeRTOS,RTX,RT-Thread 等这些都是 RTOS 类的操作系统。因此,从 FreeRTOS 的名字中就 能看出,FreeROTS 是一款免费的实时操作系统。原创 2024-05-28 12:54:43 · 552 阅读 · 0 评论 -
FreeRTOS---------信号量
同理,二值信号量在任务与中断同步的应用场景:我们在串口接收中,我们不知道啥 时候有数据发送过来,有一个任务是做接收这些数据处理,总不能在任务中每时每刻都在 任务查询有没有数据到来,那样会浪费CPU资源,所以在这种情况下使用二值信号量是很 好的办法,当没有数据到来的时候,任务就进入阻塞态,不参与任务的调度,等到数据到 来了,释放一个二值信号量,任务就立即从阻塞态中解除,进入就绪态,然后运行的时候 处理数据,这样子系统的资源就会很好的被利用起来。计数型信号量允许多个任务对其进行操作,但限制了任务的数量。原创 2024-05-22 11:01:22 · 1264 阅读 · 0 评论 -
FreeRTOS---------软件定时器
FreeRTOS的软件定时器功能。原创 2024-05-24 17:40:10 · 930 阅读 · 1 评论 -
FreeRTOS---------互斥量
如果任务的优先级被互斥量的优先级翻转机制临时提升,那么当 互斥量被释放后,任务的优先级将恢复为原本设定的优先级。也 就是说,某个临界资源受到一个互斥量保护,如果这个资源正在被一个低优先级任务使用, 那么此时的互斥量是闭锁状态,也代表了没有任务能申请到这个互斥量,如果此时一个高 优先级任务想要对这个资源进行访问,去申请这个互斥量,那么高优先级任务会因为申请 不到互斥量而进入阻塞态,那么系统会将现在持有该互斥量的任务的优先级临时提升到与高优先级任务的优先级相同,这个优先级提升的过程叫做优先级继承。原创 2024-05-23 09:13:38 · 692 阅读 · 1 评论 -
FreeRTOS---------中断管理
中断能打断任务的运行,无论该任务具有什么样的优先级,因此中断一般用于处理比较紧急的事件,而且只做简单处理,例如标记该事件,在使用 FreeRTOS 系统时,一般建议使用信号量、消息或事件标志组等标志中断的发生,将这些内核对象发布给处理任务, 处理任务再做具体处理。通过中断机制,在外设不需要 CPU 介入时,CPU 可以执行其他任务,而当外设需要 CPU 时通过产生中断信号使 CPU 立即停止当前任务转而来响应中断请求。原创 2024-05-24 15:16:24 · 626 阅读 · 1 评论 -
FreeRTOS---------事件
在某些场合,可能需要多个时间发生了才能进行下一步操作,比如一些危险机器的启 动,需要检查各项指标,当指标不达标的时候,无法启动,但是检查各个指标的时候,不 能一下子检测完毕啊,所以,需要事件来做统一的等待,当所有的事件都完成了,那么机 器才允许启动,这只是事件的其中一个应用。事件不与任务相关联,事件相互独立,一个32位的变量(事件集合,实际用于表示事 件的只有24位),用于标识该任务发生的事件类型,其中每一位表示一种事件类型(0表 示该事件类型未发生、1表示该事件类型已经发生),一共24种事件类型。原创 2024-05-24 17:17:15 · 623 阅读 · 1 评论 -
FreeRTOS---------内存管理
在计算系统中,变量、中间数据一般存放在系统存储空间中,只有在实际使用时才将 它们从存储空间调入到中央处理器内部进行运算。通常存储空间可以分为两种:内部存储 空间和外部存储空间。内部存储空间访问速度比较快,能够按照变量地址随机地访问,也 就是我们通常所说的RAM(随机存储器),或电脑的内存;而外部存储空间内所保存的内 容相对来说比较固定,即使掉电后数据也不会丢失,可以把它理解为电脑的硬盘。在这一 章中我们主要讨论内部存储空间(RAM)的管理——内存管理。原创 2024-05-24 15:16:19 · 780 阅读 · 1 评论 -
FreeRTOS---------消息队列
个人感觉这个消息队列和数组一样,就像是一个全局的数组。队列又称消息队列,是一种常用于任务间通信的数据结构,队列可以在任务与任务间、 中断和任务间传递信息,实现了任务接收来自其他任务或中断的不固定长度的消息,任务 能够从队列里面读取消息,当队列中的消息是空时,读取消息的任务将被阻塞,用户还可 以指定阻塞的任务时间 xTicksToWait,在这段时间中,如果队列为空,该任务将保持阻塞 状态以等待队列数据有效。当队列中有新消息时,被阻塞的任务会被唤醒并处理新消息;原创 2024-05-21 13:46:33 · 1266 阅读 · 1 评论 -
FreeRTOS---------CPU使用率统计
需要实现一个中断频率为系统时钟节拍的10-20倍的定时器,用于系统运行时间统计,其实很简单, 只需将CPU_RunTime变量自加即可,这个变量是用于记录系统运行时间的。一个系统设计的好坏,可以使用CPU使用率来衡量,一个好的系统必然是能完美响应 急需的处理,并且系统的资源不会过于浪费(性价比高)。FreeRTOS 是使用一个外部的变量进行统计时间的,并且消耗一个高精度的定时器,其用于定时的精度是系统时钟节拍的10-20倍。(需要实现5个宏定义,三个相关功能定义的配置,两个自己手动配置)原创 2024-05-24 15:16:28 · 403 阅读 · 1 评论 -
FreeRTOS---------任务通知
FreeRTOS 从 V8.2.0版本开始提供任务通知这个功能,每个任务都有一个32位的通知 值,在大多数情况下,任务通知可以替代二值信号量、计数信号量、事件组,也可以替代 长度为1的队列(可以保存一个32位整数或指针值)。相对于以前使用 FreeRTOS 内核通信的资源,必须创建队列、二进制信号量、计数信 号量或事件组的情况,使用任务通知显然更灵活。按照 FreeRTOS 官方的说法,使用任务 通知比通过信号量等 ICP 通信方式解除阻塞的任务要快 45%,并且更加省 RAM内存空间。原创 2024-05-25 12:57:01 · 694 阅读 · 0 评论 -
FreeRTOS---------任务管理
这个文章里面简单概括了FreeRTOS的相关重点在我们进入嵌入式这个领域的时候,往往最先接触的是裸机编程,即不带任何操作系统,程序在main函数中初始化完成以后就进入一个大的while(1)循环,这种架构适用于大多数的功能较少,单片机资源匮乏,并且对系统可靠性要求较高的场合。但随着产品需要实现的功能的不断增加,这时候仅仅用一个while(1)循环来处理众多纷纷扰扰的任务已经显得越来越力不从心,多任务实时操作系统应运而生。原创 2024-05-20 22:06:50 · 836 阅读 · 4 评论