FreeRTOS
文章平均质量分 58
dzdesigned
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
FreeRTOS 中队列的阻塞态
相反,如果你使用 `portMAX_DELAY` 而是用 `0` (`pdMS_TO_TICKS(0)`),即非阻塞模式,并且用一个 `while(1)` 循环不停地去查询队列,那才会导致高优先级任务霸占CPU,使其他任务被饿死。8. 因为任务A的优先级最高,调度器会立即抢占当前正在运行的低优先级任务(例如任务B或C),让任务A恢复运行。之后任务C也有机会运行(只要没有比它优先级更高的任务处于就绪态)。4. 调度器发现任务A阻塞了,于是从就绪列表中找出优先级最高的任务,即任务B,并让它运行。原创 2025-08-25 15:17:53 · 526 阅读 · 0 评论 -
FreeRTOS中vTaskDelay()分析
根据宏 #define pdMS_TO_TICKS( xTimeInMs ) ( ( TickType_t ) ( ( ( TickType_t ) ( xTimeInMs ) * ( TickType_t ) configTICK_RATE_HZ ) / ( TickType_t ) 1000U ) )在中断中,任务切换有专门的 API (portYIELD_FROM_ISR()),使用 vTaskDelay() 会调用错误的切换机制。esp_rom_delay_us() 忙等待。原创 2025-08-08 15:29:58 · 679 阅读 · 0 评论 -
FreeRTOS中互斥量实现数据共享优化
的实现,读任务可以高效并发,而写任务保证数据一致性。此方案在 FreeRTOS 中充分利用任务通知和互斥量,兼顾性能与可靠性,适用于读多写少的场景。读者-写者锁(Reader-Writer Lock)**优化,允许多个读任务并发访问共享数据,而写任务独占访问。当前实现假设单写任务。如需支持多写任务,需引入队列管理等待的写任务。如果读任务持续不断,写任务可能长期等待。)自动启用优先级继承,避免低优先级任务阻塞高优先级任务。:控制新读任务的进入,写任务执行时阻塞新读任务。:唤醒等待的写任务,避免忙等待。原创 2025-04-06 14:03:07 · 1062 阅读 · 0 评论 -
FreeRTOS学习(一)
FreeRTOS 入门手册_中文版1 任务函数由C语言组成 必须返回void 带一个void* 指针参数void ATaskFunction(void*pvParameter){int iVariableExample=0;for(;;){死循环}}2 任务状态总的状态 分两个状态 运行态 休眠态3创建任务xTaskCreate(); 创建任务4任务优先级xTaskCreate()函数参数列表的倒数第二个参数表示任务的优先级,如果是任务原创 2022-03-04 12:36:52 · 952 阅读 · 0 评论
分享