提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、API介绍?
- 二、API具体介绍
- 1.UBaseType_t uxTaskPriorityGet( const TaskHandle_t xTask );
- 1.1 功能:查询某个任务的优先级
- 1.2 源码分析:
- 1.3 使用方法(放到一个任务中实现的)
- 2.void vTaskPrioritySet( TaskHandle_t xTask, UBaseType_t uxNewPriority );
- 2.1 功能:设置某任务的优先级
- 2.2 使用声明
- 2.3 使用方法(放到一个任务中实现的)
- 总结
前言
今天放纵了一下自己,打了几局CSGO,所以今天只学习了我之前学习的创建任务,删除任务等其他API外的一些API
一、API介绍?
下面是我要介绍的本篇的API,我主要参考的是正点原子FreeRTOS开发文档第十一章内容。
二、API具体介绍
1.UBaseType_t uxTaskPriorityGet( const TaskHandle_t xTask );
1.1 功能:查询某个任务的优先级
1.2 源码分析:
#if ( INCLUDE_uxTaskPriorityGet == 1 )
UBaseType_t uxTaskPriorityGet( const TaskHandle_t xTask )
{
TCB_t const * pxTCB;
UBaseType_t uxReturn;
taskENTER_CRITICAL();
{
pxTCB = prvGetTCBFromHandle( xTask );
uxReturn = pxTCB->uxPriority;
}
taskEXIT_CRITICAL();
return uxReturn;
}
#endif
以上我们可以看出使用uxTaskPriorityGet时必须先打开INCLUDE_uxTaskPriorityGet的宏
然后他是带一个UBaseType_t的类型的返回值的函数由下面定义可以看出他是无符号长整形数据这样我们打印他可以用%d作为占位符。
其次他的形参是任务句柄。
typedef unsigned long UBaseType_t;
1.3 使用方法(放到一个任务中实现的)
xReturn=xTaskCreate(Task1Function,"Task1",128,NULL,2,&HandlerTask1);
void Task1Function( void * param){
UBaseType_t TaskPriority;
TaskPriority=uxTaskPriorityGet(HandlerTask1);
for(;;){
printf("Priority->%d\r\n",TaskPriority);
vTaskDelay(30);
}
}
打印结果:
2.void vTaskPrioritySet( TaskHandle_t xTask, UBaseType_t uxNewPriority );
2.1 功能:设置某任务的优先级
2.2 使用声明
#if ( INCLUDE_vTaskPrioritySet == 1 )
void vTaskPrioritySet( TaskHandle_t xTask, UBaseType_t uxNewPriority ){
......
}
#endif
2.3 使用方法(放到一个任务中实现的)
xReturn=xTaskCreate(Task1Function,"Task1",128,NULL,2,&HandlerTask1);
void Task1Function( void * param){
UBaseType_t TaskPriority;
vTaskPrioritySet(HandlerTask1,3);
TaskPriority=uxTaskPriorityGet(HandlerTask1);
for(;;){
printf("Priority->%d\r\n",TaskPriority);
vTaskDelay(30);
}
}
打印结果:
这里的API有点多,我就不一一说明了,有兴趣的取看正点原子的FreeRTOS文档,第十一章
。。。。
总结
今天主要看了一下freeRTOS其他的API实现和功能
不飞则已、一飞冲天,不鸣则已,一鸣惊人。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)