1、函数 taskYIELD()
此函数用于进行任务切换,此函数本质上是一个宏。
进入临界区,用于任务函数中,本质上是一个宏。
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特别注意事项
![Cortex-M<b class='flag-5'>内核</b>使用<b class='flag-5'>FreeRTOS</b>特别注意事项](https://file1.elecfans.com/web2/M00/A5/2A/wKgaomUJR7WAEbv9AAAaerdp8Do163.png)
使用Tracealyzer跟踪FreeRTOS内核
FreeRTOS实时内核使用指南-中文
freertos使用指南与各类型函数详细说明
STM32F767 FreeRTOS开发手册的资料说明免费下载
![STM32F767 <b class='flag-5'>FreeRTOS</b>开发手册的资料说明免费下载](https://file.elecfans.com/web1/M00/8D/FF/pIYBAFyrF0aAZsnSAAldaQwM8SE971.png)
关于FreeRTOS内核的配置说明
FreeRTOS任务控制API函数介绍
从0到1学习FreeRTOS:FreeRTOS 内核应用开发:(一)移植FreeRTOS到STM32第一部分
![从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第一部分](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
FreeRTOS高级篇7---FreeRTOS内存管理分析
![<b class='flag-5'>FreeRTOS</b>高级篇7---<b class='flag-5'>FreeRTOS</b>内存管理分析](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
FreeRTOS系列第18篇---FreeRTOS队列API函数
![<b class='flag-5'>FreeRTOS</b>系列第18篇---<b class='flag-5'>FreeRTOS</b>队列API<b class='flag-5'>函数</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
FreeRTOS系列第13篇---FreeRTOS内核控制
![<b class='flag-5'>FreeRTOS</b>系列第13篇---<b class='flag-5'>FreeRTOS</b><b class='flag-5'>内核</b><b class='flag-5'>控制</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
FreeRTOS系列第11篇---FreeRTOS任务控制
![<b class='flag-5'>FreeRTOS</b>系列第11篇---<b class='flag-5'>FreeRTOS</b>任务<b class='flag-5'>控制</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
FreeRTOS系列第6篇---FreeRTOS内核配置说明
![<b class='flag-5'>FreeRTOS</b>系列第6篇---<b class='flag-5'>FreeRTOS</b><b class='flag-5'>内核</b>配置说明](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
评论