0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FreeRTOS中内核控制函数

麦辣鸡腿堡 来源:嵌入式Linux系统开发 作者:嵌入式Linux系统开 2023-07-06 16:53 次阅读

1、函数 taskYIELD()

此函数用于进行任务切换,此函数本质上是一个宏。

2、函数 taskENTER_CRITICAL()

进入临界区,用于任务函数中,本质上是一个宏。

3、函数 taskEXIT_CRITICAL()

退出临界区,用于任务函数中,本质上是一个宏。

4、函数 taskENTER_CRITICAL_FROM_ISR()

进入临界区,用于中断服务函数中,此函数本质上是一个宏。

5、函数 taskEXIT_CRITICAL_FROM_ISR()

退出临界区,用于中断服务函数中,此函数本质上是一个宏。

6、函数 taskDISABLE_INTERRUPTS()

关闭可屏蔽的中断,此函数本质上是一个宏。

7、函数 taskENABLE_INTERRUPTS()

打开可屏蔽的中断,此函数本质上是一个宏。

8、函数 vTaskStartScheduler()

启动任务调度器。

9、函数 vTaskEndScheduler()

关闭任务调度器。

此函数仅用于 X86 架构的处理器,调用此函数以后所有系统时钟就会停止运行,所有创建的任务都会自动的删除掉(FreeRTOS 对此函数的解释是会自动删除所有的任务,但是在 FreeRTOS 的源码中没有找到相关的处理过程,有可能要根据实际情况编写相关代码,亦或是 X86 的硬件会自动处理?笔者不了解 X86 架构),多任务性能关闭。可以调用函数vTaskStartScheduler()来重新开启任务调度器。此函数在文件 tasks.c 中有如下定义:

void

vTaskEndScheduler

(

void

)

{

portDISABLE_INTERRUPTS();

//关闭中断

xSchedulerRunning=pdFALSE;

//标记任务调度器停止运行

vPortEndScheduler();

//调用硬件层关闭中断的处理函数

}

函数 vPortEndScheduler()在 port.c 中有定义,这个函数在移植 FreeRTOS 的时候要根据实际使用的处理器来编写,此处没有实现这个函数,只是简单的加了一行断言,函数如下:

void

vPortEndScheduler

(

void

)

{

configASSERT(uxCriticalNesting==

1000U

L);

}

10、函数 vTaskSuspendAll()

挂起任务调度器,调用此函数不需要关闭可屏蔽中断即可挂起任务调度器,此函数在文件tasks.c 中定义。

11、函数 xTaskResumeAll()

此函数用于将任务调度器从挂起壮态恢复。

12、函数 vTaskStepTick()

此 函 数 在 使 用 FreeRTOS 的 低 功 耗 tickless 模 式 的 时 候 会 用 到 , 即 宏 configUSE_TICKLESS_IDLE 为 1。当使能低功耗 tickless 模式以后在执行空闲任务的时候系统时钟节拍中断就会停止运行,系统时钟中断停止运行的这段时间必须得补上,这个工作就是由 函数 vTaskStepTick()来完成的,此函数在文件 tasks.c 中定义。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5017

    文章

    18496

    浏览量

    293147
  • FreeRTOS
    +关注

    关注

    12

    文章

    474

    浏览量

    61520
收藏 人收藏

    评论

    相关推荐

    Cortex-M内核使用FreeRTOS特别注意事项

    本文来自CSDN博客FreeRTOS基础篇,本篇主要分享Cortex-M内核使用FreeRTOS特别注意事项。
    发表于 09-19 15:01 440次阅读
    Cortex-M<b class='flag-5'>内核</b>使用<b class='flag-5'>FreeRTOS</b>特别注意事项

    使用Tracealyzer跟踪FreeRTOS内核

    模式,可以跟踪单个任务和特定内核函数的内存分配和内存共享,使用这个工具,可以很方便的找到内存错误的原因。有趣的是,Tracealyzer 不仅帮助我发现并修复了我自己代码的错误,还帮助我发现并修复了
    发表于 12-01 14:57

    FreeRTOS实时内核使用指南-中文

    FreeRTOS实时内核使用指南-中文版,Using the FreeRTOS Real Time Kernel - A Practical Guide的中文版本
    发表于 07-13 15:11 119次下载

    freertos使用指南与各类型函数详细说明

    FreeRTOS 内核支持优先级调度算法,每个任务可根据重要程度的不同被赋予一定的优先级,下面说明了各类函数的具体应用,包括API函数从任务创建到联合程序部分的具体过程演练步骤。
    发表于 11-18 02:08 9185次阅读

    STM32F767 FreeRTOS开发手册的资料说明免费下载

    FreeRTOS任务切换,第十章FreeRTOS系统内核控制函数,第十一章FreeRTOS 其他
    发表于 04-08 08:00 97次下载
    STM32F767 <b class='flag-5'>FreeRTOS</b>开发手册的资料说明免费下载

    内核使用FreeRTOS的特别注意事项有哪些?

    在阅读本文之前,有两个定义在FreeRTOSConfig.h中的宏,你必须先明白它们是什么意思,《FreeRTOS内核配置说明》一文中,讲解了这两个
    的头像 发表于 02-01 10:21 2449次阅读
    <b class='flag-5'>内核</b>使用<b class='flag-5'>FreeRTOS</b>的特别注意事项有哪些?

    关于FreeRTOS内核的配置说明

    FreeRTOS内核是高度可定制的,使用配置文件FreeRTOSConfig.h进行定制。每个FreeRTOS应用都必须包含这个头文件,用户根据实际应用来裁剪定制FreeRTOS
    的头像 发表于 02-01 10:37 2428次阅读

    FreeRTOS任务控制API函数介绍

    FreeRTOS任务控制API函数主要实现任务延时、任务挂起、解除任务挂起、任务优先级获取和设置等功能。 1. 相对延时 1.1 函数描述 void vTaskDelay
    的头像 发表于 03-19 10:19 2106次阅读

    FreeRTOS中的API函数功能分析及调用方法

    FreeRTOS中的API函数功能分析及调用方法说明。
    发表于 03-26 11:50 32次下载

    从0到1学习FreeRTOSFreeRTOS 内核应用开发:(一)移植FreeRTOS到STM32第一部分

    从0到1学习FreeRTOSFreeRTOS 内核应用开发:(一)移植FreeRTOS到STM32第一部分
    发表于 12-04 12:51 22次下载
    从0到1学习<b class='flag-5'>FreeRTOS</b>:<b class='flag-5'>FreeRTOS</b> <b class='flag-5'>内核</b>应用开发:(一)移植<b class='flag-5'>FreeRTOS</b>到STM32第一部分

    FreeRTOS高级篇7---FreeRTOS内存管理分析

    FreeRTOS操作系统将内核与内存管理分开实现,操作系统内核仅规定了必要的内存管理函数原型,而不关心这些内存管理函数是如何实现的。这...
    发表于 01-26 17:36 7次下载
    <b class='flag-5'>FreeRTOS</b>高级篇7---<b class='flag-5'>FreeRTOS</b>内存管理分析

    FreeRTOS系列第18篇---FreeRTOS队列API函数

    FreeRTOS为操作队列提供了非常丰富的API函数,包括队列的创建、删除,灵活的入队和出队方式、带中断保护的入队和出队等等。下面就来详细...
    发表于 01-26 17:44 11次下载
    <b class='flag-5'>FreeRTOS</b>系列第18篇---<b class='flag-5'>FreeRTOS</b>队列API<b class='flag-5'>函数</b>

    FreeRTOS系列第13篇---FreeRTOS内核控制

    内核控制的一些功能需要移植层提供,为了方便移植,这些API函数用宏来实现,比如上下文切换、进入和退出临界区、禁止和使能可屏蔽中断。...
    发表于 01-26 17:52 1次下载
    <b class='flag-5'>FreeRTOS</b>系列第13篇---<b class='flag-5'>FreeRTOS</b><b class='flag-5'>内核</b><b class='flag-5'>控制</b>

    FreeRTOS系列第11篇---FreeRTOS任务控制

    FreeRTOS任务控制API函数主要实现任务延时、任务挂起、解除任务挂起、任务优先级获取和设置等功能。
    发表于 01-26 17:54 12次下载
    <b class='flag-5'>FreeRTOS</b>系列第11篇---<b class='flag-5'>FreeRTOS</b>任务<b class='flag-5'>控制</b>

    FreeRTOS系列第6篇---FreeRTOS内核配置说明

    FreeRTOS内核是高度可定制的,使用配置文件FreeRTOSConfig.h进行定制。每个FreeRTOS应用都必须包含这个头文件,用户根据实际应用来裁剪...
    发表于 01-26 17:57 15次下载
    <b class='flag-5'>FreeRTOS</b>系列第6篇---<b class='flag-5'>FreeRTOS</b><b class='flag-5'>内核</b>配置说明