FreeRTOS
文章平均质量分 95
记录学习FreeRTOS的过程
嵌入式JunG
一个热爱嵌入式的小学生
展开
-
FreeRTOS中断管理
中断是指在程序执行的过程中,突然发生了某种事件,需要立即停止当前正在执行的程序,并转而处理这个事件,处理完后再回到原来的程序执行点继续执行的过程。中断可以是硬件中断(由硬件设备触发)或软件中断(由程序执行中断指令触发)。中断可以提高计算机的响应速度和效率,使得计算机可以同时处理多个任务。原创 2024-05-16 17:09:33 · 1205 阅读 · 0 评论 -
FreeRTOS延时函数、软件定时器
延时函数是一种编程语言中常用的函数类型,用于暂停一段时间后再执行后续的操作。在延时函数执行期间,程序会暂停执行,直到指定的时间结束后才会继续执行后续代码。常见的延时函数参数是毫秒或微秒,可以控制真实时间和计算机时间的关系。延时函数常用于需要等待或暂停执行的场景,如控制程序运行速度、动画效果等。不过,过度使用延时函数可能会影响程序的性能和响应速度。简单可以理解为闹钟,到达指定一段时间后,就会响铃。原创 2024-05-16 15:55:57 · 1533 阅读 · 0 评论 -
FreeRTOS任务通知
而这里的实验成功模仿了二值信号量的获取释放,按下KEY1发送二至信号量,再次按下KEY2接收二值信号量。如果被通知任务没有取走上一个通知,又接收到了一个通 知,则这次通知值丢弃,在这种情况下视为调用失败并返回 pdFALSE。按键KEY1按下发送多个计数型型号量,按键KEY2按下一次接收计数型型号了,同时任务通知值递减。这里的相关配置是基于上一个实验的,所以与上面的CubeMX配置流程相同。如果被通知的任务当前没有通知,则被通知的任务的通知值设为ulValue。原创 2024-05-15 23:17:40 · 1109 阅读 · 0 评论 -
FreeRTOS事件标志组
可见只有当按键1和按键2后才能执行task2,task2中的事件标志位值是设置的事件标志位都置为1后返回的值,当第1位和第2位同时为1,十六进制显示后就是0x03。创建一个事件标志组和两个任务( task1 和 task2),task1 检测按键,如果检测到 KEY1和KEY2 都按过,则执行 task2。可见当其中任何一个事件标志位置为1(任意一个按键按下),都会进入执行task2。虽然使用了 32 位无符号的数据类型变量来存储事件标志, 但其中的。高8位用作存储事件标志组的 控制信息。原创 2024-05-14 22:32:30 · 1105 阅读 · 3 评论 -
FreeRTOS互斥量
此时就需要引入互斥量。可见低优先级任务获得信号量时,高优先级想要获得信号量会进入阻塞状态,但此时中优先级会比高优先级先运行,会打断低优先级运行从而使得高优先级阻塞时间增长,当中优先级运行完毕,低优先级才继续运行,当低优先级释放信号量时,高优先级立刻获得信号量;当一个互斥信号量正在被一个低优先级的任务持有时, 如果此时有个高优先级的任 务也尝试获取这个互斥信号量,那么这个高优先级的任务就会被阻塞。以上图为例,系统中有3个不同优先级的任务H/M/L,最高优先级任务H和最低优先级任务L通过信号量机制,共享资源。原创 2024-05-13 23:59:44 · 1021 阅读 · 0 评论 -
FreeRTOS计数型信号量
①取值只有0与1两种状态的信号量称之为二值信号量;取值大于1的信号量称之为计数信号量②计数信号量是一种长度大于1,消息大小为0的特殊消息队列。③计数信号量的取值也可以为1,但通常大于1,如果取值为1,相当于只有0与1两种状态,用二值信号量即可。④创建计数信号量时,系统会为创建的计数信号量分配内存。计数型信号量相当于队列长度大于1的队列,因此计数型信号量能够容纳多个资源,这在计数型信号量被创建的时候确定的。使用计数型信号量可以解决多个任务之间的同步问题,例如控制对共享资源的访问和协调任务的执行顺序。原创 2024-05-13 21:25:16 · 1091 阅读 · 0 评论 -
FreeRTOS二值信号量
二值信号量其实就是一个长度为1,大小为零的队列只有0和1两种状态,通常情况下,我们用它来进行互斥访问或任务同步。互斥访问:比如门跟钥匙,只有获取到钥匙才可以开门任务同步:比如学习完知识点才能写博客。原创 2024-05-12 23:24:37 · 1196 阅读 · 0 评论 -
FreeROTS消息队列
队列又称消息队列,是一种常用于任务间通信的数据结构,队列可以在任务与任务间、中断和任 务间传递信息。为什么不使用全局变量?如果使用全局变量,任务1修改了变量 a ,等待任务3处理,但任务3处理速度很慢,在处理数据的过程中,任务2有可能又修改了变量 a ,导致任务3有可能得到的不是正确的数据。在这种情况下,就可以使用队列。任务1和任务2产生的数据放在流水线上任务3可以慢慢一个个依次处理。队列项目:队列中的每一个数据;队列长度:队列能够存储队列项目的最大数量;原创 2024-05-12 21:18:08 · 832 阅读 · 0 评论 -
FreeRTOS任务调度器
任务调度器是实时操作系统(RTOS)的一个关键组件,它负责决定在多个可运行任务中哪一个将获得CPU时间得以执行。它基于任务的优先级和状态来做出这些决定。在一个RTOS中,可能会有多个任务同时运行,但是在任意时刻,CPU只能执行一个任务。任务调度器的主要目标是按照系统的需求合理分配CPU时间。调度器就是使用相关的调度算法来决定当前需要执行的哪个任务。基本功能任务的选择任务调度器会根据预设的算法从所有可运行的任务中选择一个要执行的任务。任务的优先级任务通常会被分配一个优先级,原创 2024-05-10 20:16:01 · 1220 阅读 · 0 评论 -
FreeRTOS任务详解、创建与删除
任务可以理解为进程/线程,创建一个任务,就会在内存开辟一个空间。比如: 玩游戏、陪女朋友,都可以视为任务;Windows 系统中的 MarkText 、谷歌浏览器、记事本,都是任务。在 FreeROTS 中,任务可以分配不同的优先级,并按照优先级进行调度。当一个任务没有工作可以做时,操作系统会将 CPU 时间分配给另一个优先级更高的任务,以确保系统的正常运行。原创 2024-05-09 20:53:12 · 1500 阅读 · 0 评论 -
FreeRTOS介绍
Free即免费的,RTOS的全称是Real time operating system,中文就是实时操作系统。注意:RTOS不是指某一个确定的系统,而是指一类操作系统。比如:uc/OS,FreeRTOS,RTX, RT-Thread等这些都是RTOS类操作系统。FreeRTOS是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满足较小系统的需要。由于RTOS需占用一定的系统资源尤其是RAM。原创 2024-05-08 21:07:57 · 6676 阅读 · 0 评论