FreeRTOS任务切换解析
来源:互联网 发布:java项目转成maven项目 编辑:程序博客网 时间:2024/05/17 06:08
转载于:http://blog.sina.com.cn/s/blog_5f0bed160100tqnu.html
说明:嵌入式系统FreeRTOS任务切换牵涉到具体硬件体系结构的支持,(堆栈类型,寄存器种类,工作模式等不同)
下面根据CortexM3内核---STM32处理器---进行介绍:
一:启动第一个任务,
二:portYIELD_WITHIN_API(任务切换)包括 创建任务,
1.1:主函数:main(){
//创建第一个任务
//开启内核运行,调度便由此开始。
vTaskStartScheduler();
}
1.2:内部调用的函数
下面解析:VTastStartScheduler的实现:
void vTaskStartScheduler( void )
{
portBASE_TYPE xReturn;
}
1.3内部第二个函数,在Port.c文件中实现。
xPortStartScheduler代码如下:
portBASE_TYPE xPortStartScheduler( void )
{
会变函数,用NVIC SVC软中断实现
__asm void vPortStartFirstTask( void )
{
}
}
#defineportYIELD()
利用PendSV异常实现任务切换
void vPortYieldFromISR( void )
{
}
出现portYIELD_WITHIN_API的地方有以下几处:
2.1:任务创建,如果创建的任务优先级比正在运行的高,进行切换
2.2:任务删除(删除自己)
2.3:任务延时vTaskDelayUntil
如果延时时间没有到,强迫切换
2.4:任务优先级设置vTaskPrioritySet
2.4.1:
2.4.2:
判断标志变量的数值:
2.5:任务挂起 vTaskSuspend 只能挂起自己
if( pxTaskToSuspend == pxCurrentTCB )
2.6:任务唤醒
2.7:xTaskResumeAll
- FreeRTOS任务切换解析
- FreeRTOS任务切换解析
- FreeRTOS---任务切换
- FreeRTOS任务切换
- FreeRTOS 任务调度 任务切换
- FreeRTOS高级篇4---FreeRTOS任务切换分析
- FreeRTOS高级篇4---FreeRTOS任务切换分析
- FreeRTOS中打开关闭任务切换
- FreeRTOS任务间通讯
- FreeRTOS的任务管理
- FreeRTOS详解---任务管理
- FreeRTOS 任务通知
- HEXIWEAR---FreeRTOS之任务
- FreeRTOS 任务优先级问题
- FreeRTOS中的任务状态
- FreeRTOS任务基础知识总结
- FreeRTOS任务创建
- FreeRTOS任务调度研究
- 7.《程序猿扯淡系列》回家的愿望--千山万水难阻
- 一天建好罗马城: 计算机视觉三维重建项目数据集锦
- SQL Server column not allow Null,insert failed
- 如何在让xp的iis5.1支持ASP.NET??
- When it comes to two corresponding names,one of them will be forces \( \)
- FreeRTOS任务切换解析
- 一天建好罗马城项目介绍 Bundle Adjustment in the Large
- "ORA-20100: 为 FND_FILE 创建文件 o0003167.tmp 失败"
- PAMView: Providence Aerial MultiView Dataset
- 云计算(二十六)- 分布式服务框架 Zookeeper -- 管理分布式环境中的数据
- 关于设置捕获信号的gen_server在-eval无法正常启动问题分析
- x86键盘跑马灯
- HP GDCC IT 评论(comments)
- jsonObject对象与本地自定义对象相互转化