FreeRTOS
文章平均质量分 58
FreeRTOS
夏玉林的学习之路
日出未必意味着光明,太阳也无非是一颗晨星而已,只有在我们醒着时,才是真正的破晓
展开
-
12_FreeRTOSCPU利用率统计
用户想要使用 CPU 利用率统计的话,需要自定义配置一下,首先在FreeRTOSConfig.h 配置与系统运行时间和任务状态收集有关的配置选项,并且实现portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() 与portGET_RUN_TIME_COUNTER_VALUE()这两个宏定义vTaskGetRunTimeStats()和 vTaskList()函数获得任务的相关信息与 CPU 使用率的相关信息。原创 2024-04-24 22:57:40 · 247 阅读 · 0 评论 -
11_FreeRTOS中断管理
临界段用一句话概括就是一段在执行的时候不能被中断的代码段。在 FreeRTOS 里面,这个临界段最常出现的就是对全局变量的操作。1.1 Cortex-M内核快速开关中断指令1.2 关中断FreeRTOS 关中断的函数在 portmacro.h 中定义,分不带返回值和带返回值两种。1.3 开中断1.4 临界段代码临界段代码也叫做临界区,是指那些必须完整运行,不能被打断的代码段,比如有的外设的初始化需要严格的时序,初始化过程中不能被打断。1.4.1 任务级临界段代码保护。原创 2024-04-23 21:45:29 · 458 阅读 · 0 评论 -
10_FreeRTOS内存管理
标准 C 库中的 malloc()和 free()也可以实现动态内存管理,但是如下原因限制了其使用:● 这些函数在小型嵌入式系统中并不总是可用的,小型嵌入式设备中的 RAM 不足。● 它们的实现可能非常的大,占据了相当大的一块代码空间。● 他们几乎都不是安全的。● 它们并不是确定的,每次调用这些函数执行的时间可能都不一样。● 它们有可能产生碎片。● 这两个函数会使得链接器配置得复杂。原创 2024-04-23 21:38:52 · 359 阅读 · 0 评论 -
09_FreeRTOS任务通知
FreeRTOS 从 V8.2.0 版本开始提供任务通知这个功能,每个任务都有一个 32 位的通知值,在大多数情况下,任务通知可以替代二值信号量、计数信号量、事件组,也可以替代长度为 1 的队列(可以保存一个 32位整数或指针值)。vTaskNotifyGiveFromISR()是 vTaskNotifyGive()的中断保护版本。xTaskNotifyFromISR()是 xTaskNotify()的中断保护版本。ulTaskNotifyTake()和xTaskNotifyWait()原创 2024-04-23 21:34:48 · 245 阅读 · 0 评论 -
08_FreeRTOS软件定时器
定时器,是指从指定的时刻开始,经过一个指定时间,然后触发一个超时事件,用户可以自定义定时器的周期与频率。FreeRTOS 操作系统提供软件定时器功能,软件定时器的使用相当于扩展了定时器的数量,允许创建更多的定时业务。FreeRTOS 软件定时器功能上支持:●裁剪:能通过宏关闭软件定时器功能。●软件定时器创建。●软件定时器启动。●软件定时器停止。●软件定时器复位。●软件定时器删除。1.1 软件定时器应用场景。原创 2024-04-23 21:26:07 · 334 阅读 · 0 评论 -
07_FreeRTOS事件
事件是一种实现任务间通信的机制,主要用于实现多任务间的同步,但事件通信只能是事件类型的通信,无数据传输。与信号量不同的是,它可以实现一对多,多对多的同步。configUSE_16_BIT_TICKS 定义为 0,那么 uxEventBits 是 32 位的,有 24 个位用来实现事件标志组。一对多同步模型:一个任务等待多个事件的触发,这种情况是比较常见的;多对多同步模型:多个任务等待多个事件的触发。FreeRTOS 提供的事件具有如下特点:事件控制块。原创 2024-04-23 21:23:28 · 288 阅读 · 0 评论 -
06_FreeRTOS互斥量
互斥信号量其实就是一个拥有优先级继承的二值信号量,在同步的应用中(任务与任务或中断与任务之间的同步)二值信号量最适合。互斥信号量适合用于那些需要互斥访问的应用中。在互斥访问中互斥信号量相当于一个钥匙,当任务想要使用资源的时候就必须先获得这个钥匙,当使用完资源以后就必须归还这个钥匙,这样其他的任务就可以拿着这个钥匙去使用资源。原创 2024-04-23 21:20:41 · 234 阅读 · 0 评论 -
05_FreeRTOS信号量
信号量(Semaphore)是一种实现任务间通信的机制,可以实现任务之间同步或临界资源的互斥访问,常用于协助一组相互竞争的任务来访问临界资源。在多任务系统中,各任务之间需要同步或互斥实现临界资源的保护,信号量功能可以为用户提供这方面的支持。1.1 二值信号量二值信号量既可以用于临界资源访问也可以用于同步功能。1.2 计数信号量。原创 2024-04-23 21:03:12 · 262 阅读 · 0 评论 -
04_FreeRTOS消息队列
队列又称消息队列,是一种常用于任务间通信的数据结构,队列可以在任务与任务间、中断和任务间传递信息,实现了任务接收来自其他任务或中断的不固定长度的消息。FreeRTOS 中使用队列数据结构实现任务异步通信工作,具有如下特性:●消息支持先进先出方式排队,支持异步读写工作方式。●读写队列均支持超时机制。●消息支持后进先出方式排队,往队首发送消息(LIFO)。●可以允许不同长度(不超过队列节点最大值)的任意类型消息。●一个任务能够从任意一个消息队列接收和发送消息。原创 2024-04-22 21:26:39 · 326 阅读 · 0 评论 -
03_FreeRTOS任务管理
任务状态通常分为以下四种:就绪(Ready)运行(Running)阻塞(Blocked)挂起态(Suspended)原创 2024-04-20 23:33:28 · 722 阅读 · 0 评论 -
02_FreeRTOS启动流程
在 Cortex-M3 架构中,FreeRTOS 为了任务启动和任务切换使用了三个异常:SVC、PendSV 和 SysTick:原创 2024-04-19 08:10:18 · 290 阅读 · 0 评论 -
01_FreeRTOS移植
复制工程模板,不需要的源文件全部删除。替换掉工程中的裸机延时。原创 2024-04-17 15:08:58 · 292 阅读 · 0 评论 -
00_初识FreeRTOS
比如 char 型变量的前缀是 c,short型变量的前缀是s,long 型变量的前缀是l,portBASE_TYPE 类型变量的前缀是x。因此,当我们定义一个无符号的 char 型变量的时候会加一个 uc 前缀,当定义一个char型的指针变量的时候会有一个pc前缀。这里有一个最有效也是最难的方法,就是阅读 RTOS 的源码,深究内核和每个组件的实现方式,这个过程枯燥且痛苦。如果是学习,只会简单的调用API,那是不可取的,我们应该深入的学习其中一款 RTOS。官网 www.freertos.org 获得。原创 2024-04-17 10:40:33 · 304 阅读 · 0 评论