FreeRTOS快速入门
FreeRTOS快速入门
放学D少年
我是一名嵌入式爱好者!!!
展开
-
FreeRTOS事件标志组(12)
事件标志组适用于多个事件触发一个或多个任务运行,可以实现事件的广播,还可以实现多个任务的同步运行,如下所述事件标志组允许任务等待一个或多个事件的组合事件标志组会解除所有等待同一事件的任务的阻塞状态事件标志组中每个事件标志的状态由 EventBits_t 类型变量中的单个位表示。如果 EventBits_t 变量中的某个位设置为 1 ,则该位表示的事件已发生,否则如果 EventBits_t 变量中的某个位设置为 0 ,则该位表示的事件尚未发生。原创 2024-09-29 16:00:06 · 326 阅读 · 0 评论 -
FreeRTOS队列集(11)
一个队列只允许任务间传递的消息为同一种数据类型,如果需要在任务间传递不同数据类型的消息时,那么就可以使用队列集!作用:用于对多个队列或信号量进行“监听”,其中不管哪一个消息到来,都可让任务退出阻塞状态。原创 2024-09-29 15:58:14 · 59 阅读 · 0 评论 -
FreeRTOS信号量(10)
信号量的简介信号量是进程间用于通信的一种手段,其是基于队列实现的,信号量更适用于进程间同步,信号量包括二值信号量(Binary Semaphores)和计数信号量(Counting Semaphores)任务的同步和互斥《RTOS 中的同步与互斥》 在实时操作系统(RTOS)中,同步是不同任务之间或者任务与外部事件之间的协同工作方式,确保多个并发执行的任务按照预期的顺序或时机执行。同步涉及到线程或任务间的通信和协调机制,其目的在于避免数据竞争、解决竞态条件,并确保系统的正确行为。 而互斥则是指某一资源原创 2024-09-29 15:57:25 · 332 阅读 · 0 评论 -
FreeRTOS消息队列(09)
队列是任务到任务、任务到中断、中断到任务数据交流的一种机制(消息传递)FreeRTOS基于队列, 实现了多种功能,其中包括队列集、互斥信号量、计数型信号量、二值信号量、 递归互斥信号量,因此很有必要深入了解 FreeRTOS 的队列。读写队列做好了保护,防止多任务同时访问冲突;我们只需要直接调用API函数即可,简单易用!在队列中可以存储数量有限、大小固定的数据。队列中的每一个数据叫做“队列项目”,队列能够存储“队列项目”的最大数量称为队列的长度队列长度为:5个队列项目大小为:10字节。原创 2024-09-29 15:53:09 · 458 阅读 · 0 评论 -
FreeRTOS时间管理(08)
函数描述相对延时绝对延时相对延时: 指每次延时都是从执行函数vTaskDelay()开始,直到延时指定的时间结束绝对延时: 指将整个任务的运行周期看成一个整体,适用于需要按照一定频率运行的任务(1)为任务主体,也就是任务真正要做的工作(2)是任务函数中调用vTaskDelayUntil()对任务进行延时(3)为其他任务在运行。原创 2024-09-29 15:50:23 · 72 阅读 · 0 评论 -
任务状态查询API函数介绍(07)
① portCONFIGURE_TIMER_FOR_RUNTIME_STATE() : 用于初始化用于配置任务运行时间统计的时基定时器;② portGET_RUN_TIME_COUNTER_VALUE(): 用于获取该功能时基硬件定时器计数的计数值。State : 任务的壮态信息, B 是阻塞态, R 是就绪态, S 是挂起态, D 是删除态。Num : 任务编号, 这个编号是唯一的, 当多个任务使用同一个任务名的时候可以通过此编号来做区分。Stack : 任务堆栈的。原创 2024-09-29 15:48:57 · 76 阅读 · 0 评论 -
FreeRTOS任务调度(06)
想象下应该如何启动第一个任务? 假设我们要启动的第一个任务是任务A, 那么就需要将任务A的寄存器值恢复到CPU寄存器任务A的寄存器值, 在一开始创建任务时就保存在任务堆栈里边!原创 2024-09-29 15:47:24 · 249 阅读 · 0 评论 -
FreeRTOS列表和列表项(05)
列表是 FreeRTOS 中的一个数据结构, 概念上和链表有点类似, 列表被用来跟踪 FreeRTOS 中的任务。列表项就是存放在列表中的项目列表相当于链表, 列表项相当于节点, FreeRTOS 中的列表是一个双向环形链表列表的特点: 列表项间的地址非连续的, 是人为的连接到一起的。列表项的数目是由后期添加的个数决定的, 随时可以改变数组的特点: 数组成员地址是连续的, 数组在最初确定了成员数量后期无法改变。原创 2024-09-29 15:43:32 · 223 阅读 · 0 评论 -
FreeRTOS临界段代码保护(04)
什么是临界段?临界段代码也叫做临界区, 是指那些必须完整运行, 不能被打断的代码段外设: 需严格按照时序初始化的外设: IIC、SPI等等系统: 系统自身需求用户: 用户需求问题: 什么可以打断当前程序的运行?中断或者任务调度临界区是直接屏蔽了中断, 系统任务调度靠中断, ISR也靠中断FreeRTOS 在进入临界段代码的时候需要关闭中断, 当处理完临界段代码以后再打开中断函数描述(任务级)进入临界段(任务级)退出临界段(中断级)进入临界段(中断级)退出临界段。原创 2024-09-29 15:41:32 · 68 阅读 · 0 评论 -
FreeRTOS中断管理(03)
让CPU打断正常运行的程序, 转而去处理紧急的事件 (程序 ) , 就叫中断中断执行机制, 可简单概括为三步:1, 中断请求: 外设产生中断请求 (GPIO外部中断、定时器中断等 )2, 响应中断: CPU停止执行当前程序, 转而去执行中断处理程序 (ISR )3, 退出中断: 执行完毕, 返回被打断的程序处, 继续往下执行。原创 2024-09-29 15:38:25 · 368 阅读 · 0 评论 -
FreeRTOS任务创建和删除(02)
一个最简单的任务函数FreeRTOS中任务是一个永远不会退出的 C 函数,因此通常是作为无限循环实现,其不允许以任何方式从实现函数中返回,如果一个任务不再需要,可以显示的将其删除,其典型的任务函数结构如下所示/** * @brief 任务函数 * @retval None */void ATaskFunction(void *pvParameters) { /*初始化或定义任务需要使用的变量*/ int iVariable = 0; for(;;) { /*完成任务的原创 2024-09-29 15:34:31 · 473 阅读 · 0 评论 -
FreeRTOS基础知识(01)
在嵌入式领域中,嵌入式实时操作系统正得到越来越广泛的应用。采用嵌入式实时操作系统(RTOS)可以更合理、更有效地利用CPU的资源,简化应用软件的设计,缩短系统开发时间,更好地保证系统的实时性和可靠性。原创 2024-09-29 15:32:14 · 811 阅读 · 0 评论