自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 跟着野火视频学习FreeRTOS——事件

事件标志组存储在一个 EventBits_t 类型的变量中,该变量在事件组结构体中定义,在 STM32中, uxEventBits 是 32 位的,所以我们有 24 个位用来实现事件组。除了事件标志组变量之外,FreeRTOS 还使用了一个链表来记录等待事件的任务,所有在等待此事件的任务均会被挂载在等待事件列表 xTasksWaitingForBits。在 FreeRTOS 事件中, 每个事件获取的时候,用户可以选择感兴趣的事件,并且选择。但是它与信号量不同的是,事件的发送操作是不可累计的,

2025-04-08 14:17:46 692

原创 跟着野火视频学习FreeRTOS——互斥量

用互斥量处理不同任务对临界资源的同步访问时, 任务想要获得互斥量才能进行资源访问,如果一旦有任务成功获得了互斥量,则互斥量立即变为闭锁状态,此时其他任务会因为获取不到互斥量而不能访问这个资源, 任务会根据用户自定义的等待时间进行等待,直到互斥量被持有的任务释放后,其他任务才能获取互斥量从而得以访问该临界资源,此时互斥量再次上锁,如此一来就可以确保每个时刻只有一个任务正在访问这个临界资源,保证了临界资源操作的安全性。当互斥量被任务持有时,其他任务将不能对该互斥量开锁或持有,这个任务获得互斥量的所有权。

2025-04-08 00:02:37 593

原创 跟着野火视频学习FreeRTOS——信号量

此外系统还有很多资源,我们也可以使用计数信号量进行资源管理,信号量的计数值表示系统中可用的资源数目,任务必须先获取到信号量才能获取资源访问权,当信号量的计数值为零时表示系统没有可用的资源,注意,在使用完资源的时候必须归还信号量,否则当计数值为0的时候任务就无法访问该资源了。用作同步时,信号量在创建后应被置为空,任务一获取信号量而进入阻塞,任务二在某种套件发生后,释放信号量,于是任务以一获得信号量得以进入就绪态,如果任务一的优先级是最高的,那么就会立即切换任务,从而达到了两个任务间的同步。

2025-04-07 15:15:15 481

原创 跟着野火视频学习FreeRTOS——消息队列

是一种常用于任务间通信的数据结构,队列可以在任务与任务间、中断和任务间传递信息,实现了任务接收来自其他任务或中断的不固定长度消息。任务能够从队列里面读取消息,当队列中消息是空时,读取消息的任务将被阻塞,用户还可以指定阻塞的任务时间xTaskToWait,在这段时间中,如果队列为空,该任务将保持阻塞状态以等待队列数据有效。当队列中有新消息时,被阻塞的任务会被唤醒并处理新消息。当等待的时间超过了指定的阻塞时间,即使队列中尚无有效数据,任务也会自动从阻塞态转为就绪态。消息队列是一种异步的通信方式。

2025-04-05 19:03:14 612

原创 跟着野火视频学习FreeRTOS——任务管理

今天要学习FreeRTOS的任务管理章节。

2025-04-04 18:03:19 617

原创 跟着野火视频学习FreeRTOS——FreeRTOS的启动流程

本节内容是学习FreeRTOS的启动流程。

2025-04-02 23:52:18 836

原创 跟着野火视频学习FreeRTOS——支持时间片

所谓时间片就是同一个优先级下可以有多个任务,每个任务轮流地享有相同的CPU时间,享有CPU的时间叫做时间片。在FreeRTOS中时间片的大小只能是一个tick。

2025-03-31 08:16:50 244

原创 跟着野火视频学习FreeRTOS——任务延时列表的实现

本章之前,为了实现任务的阻塞延时,在任务控制块中内置了一个延时变量xTicksToDelay.每当任务需要延时的时候,就初始化xTicksToDelay需要延时的时间,然后将任务挂起这里的挂起只是将任务在优先级位图表 uxTopReadyPriority 中对应的位清零,并不会将任务从就绪列表中删除。当每次时基中断(SysTick 中断) 来临时, 就扫描就绪列表中的每个任务的 xTicksToDelay, 如果 xTicksToDelay 大于 0 则递减一次,然后判断xTicksToDelay 是否为

2025-03-30 21:23:37 381

原创 跟着野火视频学习FreeRTOS——支持多优先级

本节就是关于对任务切换方式这一部分的补充。之前是定义了taskYILED()函数实现两个任务轮流切换,还不支持多优先级。在本节之前,FreeRTOS还没有支持多优先级,只支持两个任务互相切换,从此,开始加入优先级的功能。在FreeRTOS中,数字优先级越小,逻辑优先级越小。

2025-03-30 20:35:58 309

原创 跟着野火视频学习FreeRTOS——空闲任务与阻塞延时的实现

*定义空闲任务的栈*/空闲任务的栈是一个定义好的数组,大小由FreeRTOSConfig.h中定义的宏configMINIMAL_STACK_SIZE控制,默认128字即512字节。定义在main.c中/*定义空闲任务的任务控制块*/本节空闲任务与阻塞延时的实现就是在上节任务的创建与任务的切换的基础上,将软件延时换为了阻塞延时,阻塞延时就是当要进行延时的时候,当前任务失去CPU的使用权,CPU转向去执行其他任务,当没有其他任务看完执行的时候执行空闲任务,延时结束后返回到当前任务。

2025-03-27 20:47:58 704

原创 跟着野火视频学习FreeRTOS——临界段的保护

这一节就大概看了一下,知道了什么是临界段的保护,了解了开关中断的函数和进出临界段的宏。

2025-03-26 21:09:11 357

原创 跟着野火视频学习FreeRTOS——任务的定义与任务的实现

本章要记录学习的内容是任务的定义与任务切换的实现裸机系统中主题就是main函数里面的顺序执行的无限循环。多任务系统中根据功能的不同把整个系统分割成独立的无法返回的函数,这个函数称为任务。定义任务栈应该就是为了给任务的运行提供基础设施平台。裸机系统中全局变量;子函数调用时的局部变量;中断发生时的函数返回地址,都放在栈中,栈是单片机RAM里的一段连续的内存空间,栈的大小一般在启动文件或者链接脚本里指定,最后又C库函数_main初始化。多任务系统中:每个任务都是独立的,互不干扰,要为每个任务分配独立的栈空间。

2025-03-26 17:58:40 905

原创 跟着野火视频学习FreeRTOS——列表与列表项的实现

这篇文章主要记录一下我在学习列表与列表项的实现过程中遇到的问题和学习内容链表中共有n个节点,前一个节点都有一个箭头指向后一个节点,首尾相连,组成一个圈。节点本身必须包含一个结点指针用于指向后一个节点,除了这个结点指针还可以携带一些私有信息,携带的方式分为两种:(1)在节点的自定义类型结构体中可以有单个的数据、数组、指针数据和自定义的结构体数据类型。//指向链表的下一节点char data1;//单个的数据//数组//指针数据//自定义结构体类型数据。

2025-03-19 17:52:31 728

原创 跟着野火视频学习FreeRTOS——新建工程软件仿真遇到的问题

1、使用配置和,这两个内核与启动文件,最终生成的与野火视频教程中的两个文件不同,是三个文件,多了一个文件。2、使用进行软件仿真时无法设置,显示的是。

2025-03-18 10:29:41 1051 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除