Loading

Loading

FreeRTOS学习笔记

FreeRTOS

来源:同济大学SuperPower战队电控组培训课程

中断

定义

单片机处理程序运行中出现的“紧急事件”的整个过程。

程序运行过程中,系统外部、系统内部或者现行程序本身若出现紧急事件,单片机立即中止线性程序的运行,自动转入相应的处理程序,待处理完后,再返回原来的程序运行,这整个过程称为程序中断。

每一种中断都有对应的中断函数,当中断发生时,程序会自动跳转到处理函数处运行,而不需要人为进行调用

image

优先级

优先级分为抢占优先级和响应优先级,抢占优先级高的无论是否有任务再执行都会先进入(插队能力),而响应优先级是排在未执行任务的前面(排队的先后)

FreeRTOS任务调度

核心机制

  1. 优先级调度

    高优先级如果就绪,会直接抢占CPU,正在运行的低优先级任务挂起

  2. FirstComeFirstServe

    与FIFO队列处理方式同理,同优先级任务,按就绪的先后顺序,先就绪的先执行

  3. 时间片轮询

    如果有两个相同优先级任务,其中一直没有被抢占,运行时间达到一个时间片主动让出CPU

FreeeRTOS的编程方法

vTaskDelay函数

任务调用该函数后,被剥夺CPU使用权,进入阻塞状态,直到延时结束,任务重新获取CPU使用权后才可以继续运行,延时从函数调用开始计算。

如果执行任务过程中发生中断,那么任务的执行周期就会变长,故 vTaskDelay 是相对延时函数,不能精确周期性执行任务。

image

HAL_Delay() 与 vTaskDelay() 的区别

  • HAL_Delay()

    使用系统始终来进行演示,并且在延时期间会阻塞整个处理器,也就是说,它会使处理器暂时停止执行其他任务和代码。

  • vTaskDelay()

    vTaskDelay函数允许任务挂起一段时间,然后由操作系统调度器在指定的任务后重新运行该任务。在多任务情况下,使用vTaskDelay可以更好地利用系统资源,避免空闲时间的浪费。

image

配置FreeRTOS

在freeRTOS中找到右下角的add选项,选择优先级,分配栈空间,执行任务的函数名

image

posted @ 2026-07-25 16:41  Miya555  阅读(4)  评论(0)    收藏  举报