FreeRtos学习专栏
文章平均质量分 76
本专栏会以通俗易懂的方式解释FreeRtos学习中遇到的一些专有名词,并给出示例代码,方便读者更加容易理解相关知识
派晟电子工作室
站在巨人的肩膀上看世界
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
在freertos中,互斥量和二值信号量我们该如何使用,它们之间有什么优势,附代码解释
当高优先级任务等待互斥量时,持有互斥量的低优先级任务会临时提升到高优先级,避免优先级反转问题。:用于保护共享资源,确保同一时间只有一个任务可以访问该资源。任务间同步(如任务 A 等待任务 B 完成某项工作)。用于保护共享资源,支持优先级继承,适合临界区保护。用于任务间同步或事件通知,适合简单的同步场景。事件通知(如中断通知任务处理数据)。当需要事件通知时(如中断通知任务)。:必须由获取互斥量的任务释放。:用于任务间同步或事件通知。当需要避免优先级反转问题时。:可以由任意任务释放。当需要任务间同步时。原创 2025-02-12 11:24:49 · 380 阅读 · 0 评论 -
在freertos中,中断优先级和任务优先级之间的关系和使用方法
中断优先级不同中断中该用多高的优先级?- 任务调度器运行时,可能会暂时屏蔽某些中断(如通过`taskENTER_CRITICAL()`和`taskEXIT_CRITICAL()`)。- 使用`taskDISABLE_INTERRUPTS()`和`taskENABLE_INTERRUPTS()`完全禁用和启用中断。- **任务优先级**:FreeRTOS中的任务优先级是一个整数值,数值越大,优先级越高。- **中断优先级**:中断优先级由硬件的中断控制器(如NVIC)管理,数值越小,优先级越高。原创 2025-02-11 19:18:47 · 1044 阅读 · 0 评论 -
在Freertos中,一些可以触发任务调度的函数
任务阻塞 | `vTaskDelay()`, `vTaskDelayUntil()`, `xQueueReceive()`, `xSemaphoreTake()` || 任务同步 | `xQueueSend()`, `xSemaphoreGive()`, `xEventGroupSetBits()` |vTaskDelayUntil(&xLastWakeTime, pdMS_TO_TICKS(100));// 设置任务优先级。原创 2025-02-10 21:47:27 · 612 阅读 · 0 评论 -
在freertos中,中断及其ISR程序设计原则是什么?
**解释**:中断服务程序(ISR)就像是一个“急救医生”,它的任务是快速处理紧急情况(比如读取数据、清除中断标志),然后马上离开,不能在里面做太多复杂的事情(比如处理大量数据或等待其他事件)。- **解释**:如果一个中断正在执行时,另一个更高优先级的中断来了,系统会暂停当前中断去处理新的中断,这就是中断嵌套。- **解释**:不同的中断有不同的紧急程度,比如硬件定时器中断可能比按键中断更重要,因此需要给它们设置不同的优先级。- **怎么做**:尽量减少中断嵌套的深度,确保每个ISR都能快速完成。原创 2025-02-10 20:56:42 · 874 阅读 · 0 评论 -
在freertos中,事件组的用途,相比与信号量有什么优势,事件组适合应用于什么场合,而这种场合却是信号量无法实现的
任务可以等待多个事件的组合(如“事件 A 和事件 B”或“事件 A 或事件 B”),而信号量无法实现这种功能。事件组可以表示系统的复杂状态(如多个任务的完成状态),而信号量只能表示简单的资源可用性或事件发生。任务可以同时等待多个事件的组合(如“事件 A 和事件 B”或“事件 A 或事件 B”)。任务需要等待多个事件的发生(如“事件 A 和事件 B”或“事件 A 或事件 B”)。任务需要等待多个事件的组合(如“事件 A 和事件 B”或“事件 A 或事件 B”)。一个任务需要通知多个任务某个事件的发生。原创 2025-02-12 15:21:51 · 676 阅读 · 0 评论 -
在FREERTOS中,什么时候使用队列,什么时候使用二值信号量,什么时候使用计数型信号量,互斥量属于信号量吗
在FreeRTOS中,**队列**、**二值信号量**、**计数型信号量**和**互斥量**是常用的同步和通信机制。| **互斥量** | 保护共享资源 | 不支持 | 不支持 | 支持 | 支持 || **计数型信号量** | 资源管理或事件计数 | 不支持 | 支持 | 无 | 无 |信号量没有所有权,任何任务或中断都可以释放信号量。- **需要管理多个资源或事件计数**:使用**计数型信号量**。原创 2025-02-05 18:11:20 · 485 阅读 · 0 评论 -
学习FREERTOS,报错显示创建计数信号量的函数未定义问题.Error: L6218E: Undefined symbol xQueueCreateCountingSemaphore
只需要把红框内的定义置1,该定义在FreeRtos.h文件下。报错说没有定义,ctrl+f查找一下,置为1便可编译通过了。原创 2025-02-05 17:57:03 · 495 阅读 · 0 评论 -
freertos中,队列和环形缓冲区有什么关系,该如何使用它们,使用队列必须使用环形缓冲区吗
**队列基于环形缓冲区实现**:FreeRTOS的队列底层使用了环形缓冲区的思想,但队列是一个更高层次的抽象,提供了线程安全和阻塞操作。// 缓冲区满,覆盖旧数据。- **队列已经封装了环形缓冲区的功能**:FreeRTOS队列内部使用了类似环形缓冲区的机制来存储数据,但用户无需手动实现。在FreeRTOS中,**队列**和**环形缓冲区**是两种不同的数据存储和传递机制,它们有各自的用途和特点。- **队列是线程安全的**:FreeRTOS队列内置了同步机制,适合任务之间的数据传递。原创 2025-02-05 20:23:15 · 877 阅读 · 0 评论 -
freertos临界区的概念,什么时候开启临界区,什么时候关闭,什么情况下需要使用临界区,临界区的作用是什么
**共享资源访问**:当多个任务或中断需要访问同一资源(如全局变量、硬件寄存器等)时,使用临界区防止冲突。- **开启临界区**:当你需要访问或修改共享资源时,开启临界区,确保在执行过程中不会被其他任务或中断干扰。- **关闭临界区**:在完成对共享资源的操作后,关闭临界区,允许其他任务或中断继续执行。- **数据一致性**:确保在修改数据时不会被其他任务或中断打断,避免数据不一致。- **确保原子操作**:保证一段代码在执行时不会被中断,确保操作的完整性。### 什么时候开启和关闭临界区?原创 2025-02-06 17:47:10 · 588 阅读 · 0 评论 -
在freertos中,临界区和互斥量是什么关系,它们的使用场景,优劣势有什么
**互斥量**:适合保护较长的操作,灵活性高,支持任务间同步,但开销较大,不能在 ISR 中使用。- **简单高效**:临界区的实现通常是通过关闭中断或调度器,开销非常小,适合保护非常短的操作。- **实时性要求高**:临界区关闭中断或调度器,可以保证代码的实时性,适合对时间敏感的操作。- **实时性强**:关闭中断后,当前任务的执行不会被任何中断打断,适合对实时性要求高的场景。- **临界区**:适合保护非常短的操作,实时性强,但会影响系统响应,不能长时间使用。原创 2025-02-06 17:55:16 · 871 阅读 · 0 评论
分享