![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
FreeRTOS
文章平均质量分 78
荣世蓥
这个作者很懒,什么都没留下…
展开
-
15.FreeRTOS_资源管理
在FreeRTOS中,中断优先级为0~190的中断不调用syscall,191~255的中断调用syscall。屏蔽中断实际上是屏蔽的中断优先级191~255的全部中断。因为屏蔽中断函数不能够屏蔽优先级为0~190的中断,因此编写优先级为0~190的中断的中断处理函数时,不能够使用临界资源。本文描述的是FreeRTOS如何处理任务与任务之间争夺临界资源,以及任务与中断之间争夺临界资源的方法。原创 2024-07-18 11:15:08 · 324 阅读 · 0 评论 -
14.FreeRTOS_中断管理
注意:portYIELD_FROM_ISR是触发调度,而不是即刻产生调度。它实际是设置了一个优先级最低的中断,当现在运行的中断执行结束后,立刻去执行这个优先级最低的中断。在这个中断中才是实际的产生任务调度。本文主要描述如何在中断中使用队列、信号量等操作。根据传入的超时时间,原创 2024-07-18 10:23:28 · 174 阅读 · 0 评论 -
13.FreeRTOS_定时器
定时器就像一个闹钟,它有超时时间、函数、是否为周期性这三个部分。原创 2024-07-15 16:08:57 · 1041 阅读 · 0 评论 -
12.FreeRTOS任务通知
任务通知并不像队列、信号量、互斥量这些方法需要在使用之前先进行创建队列、创建信号量、创建互斥量。任务通知的相关存储空间,在创建任务时就已经分配。可以看到,对于任务通知的空间,只有一个通知值和一个通知状态,并没有任何像队列结构体那些定义了等待读入任务链表、等待写入任务链表。状态转变的过程如下(假设任务A向任务B发送任务通知):当任务B调用接收任务通知的函数时,通知状态被设置成 “ 任务在等待通知 ”。当任务A调用发送任务通知的函数时,任务B的通知值val被改变,通知状态被设置成 “ 任务接收到了通知 ”原创 2024-07-15 11:25:51 · 1003 阅读 · 0 评论 -
11.FreeRTOS_事件组
同步点是事件组的另一个使用方式,它可以让多个任务进行阻塞等待,当全部事件完成后,再一起解除任务的阻塞。常常用于合作关系的情况。原创 2024-07-13 20:34:53 · 906 阅读 · 0 评论 -
10.FreeRTOS_互斥量
在博文“ FreeRTOS_信号量 ”中,使用了二进制信号量实现了互斥,保护了串口资源。但还是要引入互斥量的概念。原创 2024-07-13 16:39:09 · 862 阅读 · 0 评论 -
9.FreeRTOS_信号量
信号量的本质也是一个队列信号量中传输的是一个数值,因此信号量只能表示资源可用的数量,而不能传输数据。具体的信号量模型如下图:信号量有两种:计数型信号量、二进制信号量,它们之间的区别在于计数值的范围。原创 2024-07-13 10:39:49 · 377 阅读 · 0 评论 -
8.FreeRTOS_队列集
队列集使用在系统需要支持多个输入设备的情况,这是每个输入设备的数据都存放在一个队列中,队列集将他们管理起来,可以实现实时识别哪一个队列中有数据并将数据读取出来。原创 2024-07-12 19:48:35 · 772 阅读 · 0 评论 -
7.FreeRTOS_邮箱
邮箱的本质是一个长度为1的队列当进行写邮箱时,队列中的数据会被覆盖,因此每次写邮箱一定成功,没有阻塞选择。当进行读邮箱时,队列中的数据不会消失,因此写一次邮箱后,读邮箱就一定成功。操作邮箱与操作队列的逻辑完全一致。原创 2024-07-12 18:29:54 · 787 阅读 · 0 评论 -
6.FreeRTOS_队列进行任务间通信
这里紫色框发生了个问题,j5打印之后并没有打印空格符号就直接打印了i6,这说明Task2在运行printf("j%d ",j)这一行时,打印到%d后,就被调度器切换出去了,从而打印了Task1中的内容。可以看到i7之后有两个空格,这是因为Task1在运行printf("i%d ",i)这一行后,切换到了Task2,Task2按照之前未完成的工作继续执行,即:继续打印printf("j%d ",j)中的空格符。因此,在传输大数据时,将数据的地址进行传入,之后读取时读取地址,再通过地址访问数据。原创 2024-07-12 15:10:20 · 966 阅读 · 0 评论 -
5.FreeRTOS_队列基础知识
队列实质:队列是一个环形缓冲区,遵循先入先出(FIFO),通常将数据写入尾部,也可强制写到头部。当强制写到头部时,并不会覆盖原来的头部数据。队列等待唤醒原则:唤醒最高优先级的任务。当优先级一致时,唤醒已经等待时间最长的任务队列中包含的内容:数据buf,等待数据的任务,等待写数据的任务。原创 2024-07-12 10:38:06 · 2125 阅读 · 0 评论 -
4.FreeRTOS_任务调度算法
在FreeRTOS中,可以配置相应的宏configUSE_PREEMPTION来设置调度的模式。原创 2024-07-11 15:12:04 · 1209 阅读 · 0 评论 -
3.FreeRTOS_任务管理
这一次的代码基础是"FreeRTOS_任务创建与删除"这篇文章。原创 2024-07-11 14:14:30 · 1023 阅读 · 0 评论 -
2.FreeRTOS_任务创建与删除
每一个任务都有自己的栈,动态创建任务就是使用malloc来开辟栈的空间。原创 2024-07-09 15:42:26 · 854 阅读 · 0 评论 -
1.FreeRTOS_编写调试代码
本章内容主要实现从官网上下载一个FreeRTOS例程,并去做一些简单的程序改写,实现串口调试的功能。例程以STM32F103为例。原创 2024-07-09 10:12:06 · 414 阅读 · 0 评论