
FreeRTOS
文章平均质量分 61
明夜710
这个作者很懒,什么都没留下…
展开
-
FreeRTOS的低功耗模式
本质是裸机的睡眠模式,调用WFI指令进入,因为FreeRTOS大部分时间其实实在运行空闲任务,当任务在阻塞或者没任务时都会执行空闲任务,所以FreeRTOS低功耗模式会在执行空闲任务时进入睡眠模式。停机模式:所有时钟源关闭,只要RTC和备份寄存器工作,功耗更低,任意外部中断唤醒,如外部复位,看门狗复位,RTC闹钟等,保留SRAM和寄存器数据,唤醒后在中断处开始执行。睡眠模式: CPU时钟关闭,其他正常工作,功耗较低,可以通过任意中断或事件唤醒,CPU的寄存器和内存数据均会保留,唤醒后接着执行之前的程序。原创 2025-04-30 11:36:40 · 146 阅读 · 0 评论 -
FreeRTOS软件定时器
定时器队列是定时器服务任务使用的,用户通过API向队列发送命令,定时器任务接收队列数据并解析命令指向对应操作。软件定时器的回调函数在定时器服务任务中调用,所以回调函数中禁止使用使任务阻塞的API,如延时,队列,信号量等。软件定时器是FreeRTOS提供的低精度定时器,可以用于硬件定时器资源不够且对时间精度要求不高的场合。软件定时器任务在创建时是休眠状态,只有调用相关API才会进入运行态,也能返回休眠态。定时器服务任务在开启调度器时如果使能了相关配置宏则自动创建。本文介绍软件定时器,个人理解,仅供参考。原创 2025-04-24 17:37:39 · 174 阅读 · 0 评论 -
FreeRTOS的队列、信号量、队列集、事件组
原因:在使用二值信号量时,高低优先级的任务同时使用同一个信号量,低优先级的任务长期占有信号量时,高优先级任务会在获取信号量时阻塞,此时中优先级任务可以抢占低优先级任务一直执行,导致低优先级任务无法释放信号量,高优先级任务一直处于阻塞态。优先级继承机制:这是互斥信号量带有的机制,可以防止优先级翻转问题,当低优先级占有信号量而导致高优先级任务阻塞时,会将低优先级任务的优先级提高到与高优先级任务的优先级一致,从而防止中间等级的任务抢占而延时高优先级任务的运行。多个任务阻塞读写时,优先级高,阻塞时间长的优先读写。原创 2025-04-17 13:48:07 · 302 阅读 · 0 评论 -
STM32移植FreeRTOS
STM32移植FreeRTOS原创 2025-03-20 10:15:27 · 560 阅读 · 0 评论 -
FreeRTOS任务创建,删除,挂起和恢复
任务创建、删除、挂起、恢复原创 2025-03-21 17:24:38 · 318 阅读 · 0 评论 -
FreeRTOS的中断管理(STM32)
FreeRTOS中的一些中断特点介绍原创 2025-03-24 17:36:11 · 489 阅读 · 0 评论 -
FreeRTOS列表与列表项及其操作
列表是FreeRTOS中的一种数据结构,类似于C语言中的双向环形链表,用于跟踪FreeRTOS中的任务,记录任务的当前状态或事件,比如就绪列表,任务创建完成时就会添加至就绪列表,等待调度器调用。列表项是存放于列表中的数据,如果列表相当于数组,列表项就相当于数组中的元素,如果列表相当于链表,列表项就相当于链表的节点。(3)列表的尾部插入:其实是插入到列表索引值的前面,初始化时这个索引值指向末尾列表项。本文介绍FreeRTOS中的列表与列表项,及列表项的插入,删除等操作,仅作参考。(1)列表与列表项的初始化。原创 2025-03-27 10:21:24 · 224 阅读 · 0 评论 -
FreeRTOS任务调度过程详解
vTaskDelay()是绝对延时,即自调用起需要到达指定时间再恢复运行,vTaskDelayUntil()是相对延时,即它的延时是根据特定的一个时间点开始以整个任务为整体周期性的延时。任务保存:当进行任务切换时,需要把当前执行任务的寄存器值保存起来,将当前CPU寄存器值保存到正在运行任务的任务堆栈中(任务堆栈中已经预留了各个寄存器的位置),以便下次切换回来时恢复到上次运行的状态。任务恢复:把要执行任务的堆栈寄存器值恢复到CPU寄存器中,部分寄存器由硬件自动保存恢复(注:自动这个过程还是使用的PSP)。原创 2025-04-07 17:25:39 · 430 阅读 · 0 评论