FreeRTOS学习笔记
文章平均质量分 87
用于学习FreeRtos笔记记录及后期复习查找
BiaoMa_Fighting
励志学好变成的有志青年
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
FreeRTOS学习 -- 12、内存管理
(1)创建任务、队列、信号量等对象时,两种内存创建方法:自动地从FreeRTOS管理的内存堆中申请创建对象所需的内存,并且在对象删除后,可将这块内存释放回FreeRTOS管理的内存堆。需用户提供各种内存空间,并且使用静态方式占用的内存空间一般固定下来了,即使任务、队列等被删除后,这些被占用的内存空间一般没有其他用途。动态方式管理内存比静态方式管理内存更加灵活。占用大量的代码空间不适合用在资源紧缺的嵌入式系统中没有线程安全的相关机制运行有不确定性,每次调用这些函数时花费的时间。原创 2024-03-26 21:38:13 · 1230 阅读 · 0 评论 -
FreeRTOS学习 -- 11、低功耗模式(Tickless)
RTOS在一般的应用中,处理器大量的时间都在处理空闲任务,此时可以考虑让处理器在空闲任务的时候进入低功耗模式。当需要处理应用层代码的时候就将处理器从低功耗模式唤醒。FreeRTOS就是通过在处理器处理空闲任务的时候将处理器设置为低功耗模式来降低功耗。一般会在空闲任务的钩子函数中执行低功耗相关处理。比如设置处理器进入低功耗模式、关闭其他外设时钟、降低系统主频等等。原创 2024-03-26 13:44:20 · 909 阅读 · 0 评论 -
FreeRTOS学习 -- 9、FreeRTOS软件定时器
定时器是指从某个时刻开始,经过一个指定的时间后触发一个超时的事件,用户可以自定义定时器的定时周期。芯片本身自带的定时器模块,硬件定时器的精度一般很高,每次在定时时间到达之后就会自动触发一个中断,用户在中断服务函数中处理信息。具有定时功能的软件,可设置定时周期,当指定时间到达后要调用回调函数(也称超时函数),用户在回调函数中处理信息。软件定时器的回调函数是在定时器服务任务中执行的,因此在回调函数中不能够调用任何会阻塞任务的API函数。原创 2024-03-24 15:31:05 · 974 阅读 · 1 评论 -
FreeRTOS学习 -- 8、事件标志组
事件组就是一组的事件位,事件组中的事件位通过位编号来访问事件标志组中的bit0表示队列中的消息是否处理掉;事件标志组中的bit1表示是否有消息需要从网络中发出去;事件标志组中的bit2表示现在是否需要向网络发送心跳信息。事件组的数据类型为,当configUSE_16_BIT_TICKS为1的时候,事件标志组可以存8个事件位,当configUSE_16_BIT_TICKS为0的时候,事件标志组可以存24个事件位。一个事件组就包含了一个数据类型。原创 2024-03-21 21:39:21 · 1243 阅读 · 1 评论 -
FreeRTOS -- 10、FreeRTOS任务通知
每个任务有一个32位的通知值在大多数情况下,任务通知可以替代二值信号量、计数信号量、事件组,也可以替代长度为 1 的队列(可以保存一个 32位整数或指针值)。使用队列、信号量、事件标志组时都需另外创建一个结构体,通过中间的结构体进行间接通信!使用任务通知时,任务结构体TCB中就包含了内部对象,可以直接接收别人发过来的"通知"不覆盖接受任务的通知值【类似队列不覆写】覆盖接受任务的通知值【类似队列覆写】更新接受任务通知值的一个或多个bit【类似任务标志组】增加接受任务的通知值【类似信号量】原创 2024-03-24 16:55:00 · 906 阅读 · 1 评论 -
FreeRTOS学习 -- 6、任务状态或信息查询API函数
参数:pxTaskStatusArray:指向TaskStatus_t 结构体数组首地址,每个任务至少需要一个 TaskStatus_t结构体,任务的数量可以使用函数uxTaskGetNumberOfTasks()。2.2 vTaskPrioritySet() -- 改变任务的任务优先级函数。返回值:UBaseType_t:获取到的对应任务的优先级。参数:xTask:要查找任务的任务句柄;参数:xTask:要查找任务的任务句柄;返回值:统计到任务状态的个数。原创 2024-03-19 20:33:43 · 254 阅读 · 1 评论 -
FreeRTOS学习 -- 7、信号量
二值信号量、计数信号量、互斥信号量的创建函数不同,但是释放和获取均相同,此外注意,互斥信号量在中断中无法使用,所有没有中断中释放/获取信号量二值信号量、计数信号量、互斥信号量的创建函数不同,但是底层调用的都是同一个API(队列创建函数),只是内部机制不同、某些参数不同,创建的信号量储存结构只有结构体,没有队列项,依靠变量uxMessagesWaiting储存信号量信息二值信号量、计数信号量、互斥信号量的释放信号量通用,底层调用与队列写入函数相同,只是参数不同。原创 2024-03-20 22:29:23 · 856 阅读 · 1 评论 -
FreeRtos学习--7、队列
队列是任务到任务、任务到中断、中断到任务数据交流的一种机制(消息传递),FreeRTOS基于队列, 实现了多种功能,其中包括队列集、互斥、计数型信号量、二值信号量、 递归互斥信号量,因此很有必要深入了解 FreeRTOS 的队列。原创 2024-03-18 21:17:54 · 1239 阅读 · 0 评论 -
FreeRTOS学习--5、列表与列表项
(4)、获取要插入点,在初始化列表的时候xListEnd的列表值也是portMAX_DELAY,此时要插入的列表项的列表值也是portMAX_DELAY,插入的列表项会被放到 xListEnd 前面。通常是一个任务的任务控制块。(3)、如果列表的 pxIndex 正好指向要删除的列表项,那么在删除列表项以后要重新给pxIndex 找个“对象”啊,这个新的对象就是被删除的列表项的前一个列表项。(7)、列表项已经插入到列表中了,那么列表项的成员变量 pvContainer 也该记录此列表项属于哪个列表的了。原创 2024-01-13 16:02:01 · 1070 阅读 · 1 评论 -
FreeRTOS学习--3、配置文件FreeRTOSConfig.h详解
从而实现不同的功能配置。FreeRTOS 作为一个可高度配置的实时内核,其绝大多数配置选项都体现在 FreeRTOS.h(注意是 FreeRTOS.h 不是FreeRTOSConfig.h)中。为什么这么说?打开 FreeRTOS.h 看看就知道了,这个文件唯一要干的活就是负责根据宏值来对 FreeRTOS 进行配置的。原创 2023-12-21 20:29:33 · 1817 阅读 · 0 评论 -
FreeRTOS学习--4、任务基础知识及API函数
裸机开发(不适用操作系统)时都是在一个while循环中顺序执行相应函数,有时候会加入一些中断去完成一些功能,这就是所谓单任务系统(又称前后台系统)。该系统实时性差,但该系统简单且小号资源少。前后台系统执行顺序如图所示:多任务系统将一个大问题划分为很多个小问题,然后逐个解决。这些小任务的处理是并发处理(每个任务执行时间很短,效果上就像是同一时刻执行了多个任务),这些任务执行的先后循序由任务调度器。原创 2023-12-24 15:06:28 · 1058 阅读 · 1 评论 -
FreeRTOS学习--2、FreeRTOS移植
再次编译还是报错,因为在port.c和stm32f4xx_it.c中重复定义了函数:“PendSV_Handler ”和“SVC_Handler”,在stm32f4xx_it.c中将这两个函数注释掉,再次编译应该就没有错误了。需要注意的是,滴答定时器的中断服务函数也在在“port.c”和“stm32f10x_it.c”文件中重复定义了,需要将“stm32f10x_it.c”文件中的注释掉。在“usart.c”文件中添加“FreeRTOS.h”文件。基础工程越简单越好,可以使用一个跑马灯基础例程进行移植;原创 2023-12-19 22:20:48 · 684 阅读 · 1 评论 -
FreeRTOS学习--1、初识FreeRTOS
FreeRTOS 是 RTOS 系统的一种,FreeRTOS 十分的小巧,可以在资源有限的微控制器中运行,当然,FreeRTOS 不仅局限于在微控制器中使用。但从文件数量上来看 FreeRTOS 要比uC/OSII 和 uC/OSIII 小的多。原创 2023-12-18 21:35:03 · 660 阅读 · 1 评论
分享