FreeRTOS
文章平均质量分 88
SY枕山
要成为更有用的大人和更可爱的小孩
展开
-
FreeRTOS笔记(四)消息队列
如果有多个任务同时在阻塞状态等待队列数据,优先级高的任务会在数据到达时进入就绪状态;写队列的任务个数没有限制,当多个任务写"满队列"时,这些任务都会进入阻塞状态:有多个任务在等待同一个队列的空间。[5]的优先级最高,创建的任务优先级为x就挂在ReadList[x]的链表中,系统执行任务时先从ReadList[5]开始依次向下检索。,当多个任务读取空队列时,这些任务都会进入阻塞状态:有多个任务在等待同一个队列的数据。使用拷贝方法时,则无此限制:内核有足够的权限,把数据复制进队列、再把数据复制出队列。原创 2023-03-14 16:45:42 · 311 阅读 · 0 评论 -
FreeRTOS笔记(十)中断
当CPU在执行某一事件A时,发生另外一个更重要紧急的事件B请求CPU去处理(产生了中断),于是CPU暂时中断当前正在执行的事件A任务而对对事件B进行处理,CPU处理完事件B后再返回之前中断的位置继续执行原来的事件A,这一过程统称为中断。单片机通常拥有丰富的片内外设和很多中断源,中断程序相比于在主程序中使用循环语句轮询系统状态(Polling)能有效提高CPU的利用效率,同时能够更加及时地响应外部事件。原创 2023-06-08 17:36:23 · 842 阅读 · 0 评论 -
FreeRTOS笔记(九)定时器
软件定时器是基于系统时钟中断且由软件来模拟的定时器,当经过设定的Tick 时钟计数值后会触发用户定义的回调函数。软件定时器不占用单片机宝贵的硬件资源和CPU资源。FreeRTOS提供了完善的软件定时器的支持,为了启用软件定时器,需要在头文件中设置的值为1.软件定时器需要定时或者延时控制的函数称为函数的返回值是空类型,xTimer的参数是软件定时器的句柄。原创 2023-06-08 17:33:54 · 473 阅读 · 0 评论 -
FreeRTOS笔记(八)任务通知
我们使用队列、信号量、事件组等等方法时,并不知道对方是谁。使用任务通知时,可以明确指定:通知哪个任务。原创 2023-06-08 17:29:29 · 65 阅读 · 0 评论 -
FreeRTOS笔记(七)事件event和事件组event grtoup
与信号量不同的是,它可以实现。即一个任务可以等待多个事件的发生:可以是任意一个事件发生时唤醒任务进行事件处理;也可以是几个事件都发生后才唤醒任务进行事件处理。也可以是多个任务同步多个事件。每一个事件组只需要很少的 RAM 空间来保存事件组的状态。事件组存储在一个 EventBits_t 类型的变量中,该变量在事件组结构体中定义。事件可使用于多种场合,它能够在一定程度上替代信号量,用于任务与任务间,中断与任务间的同步。原创 2023-06-08 17:28:39 · 380 阅读 · 0 评论 -
FreeRTOS笔记(十一)调试与优化
如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用。原创 2023-06-08 17:37:31 · 736 阅读 · 0 评论 -
FreeRTOS笔记(六)互斥量mutex
在上图中,有个低优先级的任务(LP)和高优先级的任务(HP),两个任务都可以对一个资源进行操作。如果一个保存数据的全局变量在被一个任务操作的过程中,又被多个更高优先级的任务抢占并处理,那么最后这个支离破碎的数据将会毫无意义,破坏了数据的独立完整性;从外部的视角看,此时中等优先级的任务MD相当于抢占了高优先级的任务HP,而高优先级的任务HP表现起来却又像是有最低的优先级。优先级继承会暂时提高获得互斥量的任务的优先级,使得含有互斥量的任务的优先级和想要获取互斥量的任务中的最高优先级一样。宏定义会再次打开中断。原创 2023-03-14 16:53:31 · 1403 阅读 · 0 评论 -
FreeRTOS笔记(五)信号量semaphore
为此,FreeRTOS引入了信号量(Semaphore)概念,通过信号量的同步机制可以使消费者任务在数据还没到达的时候进入阻塞状态,并让出CPU资源给其他任务。假设一个简单的生产者消费者模型--有两个任务,一个任务是数据的生产者(Producer)任务,一个任务是数据的消费者(Consumer)任务,二进制信号量适用于在数据产生的频率比较低的场合。按照正常的思路,消费者任务和生产者任务会轮流执行,但是如果在消费者任务执行的时候数据还没有产生的话,消费者任务的运行就是无用的,会降低CPU的使用效率。原创 2023-03-14 16:49:53 · 305 阅读 · 1 评论 -
FreeRTOS笔记(三)调度机制
在单处理系统中,任何时间里只能有一个任务处于运行状态。。就绪态的任务,可以被调度器挑选出来切换为运行状态,调度器永远都是挑选最高优先级的就绪态任务并让它进入运行状态。阻塞状态的任务,它在等待"事件",当事件发生时任务就会进入就绪状态。事件分为两类:时间相关的事件、同步事件。所谓时间相关的事件,就是设置超时时间:在指定时间内阻塞,时间到了就进入就绪状态。原创 2022-11-21 15:17:40 · 1874 阅读 · 1 评论 -
FreeRTOS笔记(二)任务
在FreeRTOS中,线程(Thread)和任务(Task)的概念是相同的。每个任务就是一个线程,有着自己的一个程序。函数的模型示例如下所示,通常情况下包含一个永远不会退出的循环体。原创 2022-11-21 11:04:28 · 681 阅读 · 0 评论 -
FreeRTOS笔记(一)简介
操作系统是一个控制程序,负责协调分配计算资源和内存资源给不同的应用程序使用,并防止系统出现故障。操作系统通过一个调度算法和内存管理算法尽可能把资源公平且有效率地分配给不同的程序。应用程序通过调用操作系统提供的API接口获得相应资源完成指定的任务。任务(应用程序)的调度管理堆栈和内存管理文件管理队列管理中断和定时器管理资源管理输入输出管理。原创 2022-11-21 10:39:23 · 2105 阅读 · 0 评论