<FreeRTOS入门第四节>其他相关API介绍

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言


今天放纵了一下自己,打了几局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();
        {
            /* If null is passed in here then it is the priority of the task
             * that called uxTaskPriorityGet() that is being queried. */
            pxTCB = prvGetTCBFromHandle( xTask );
            uxReturn = pxTCB->uxPriority;
        }
        taskEXIT_CRITICAL();

        return uxReturn;
    }

#endif /* INCLUDE_uxTaskPriorityGet */

以上我们可以看出使用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 使用声明

/******************实现是必须打开下面INCLUDE_vTaskPrioritySet的宏***************************/
#if ( INCLUDE_vTaskPrioritySet == 1 )
/*
	然后下面的vTaskPrioritySet( TaskHandle_t xTask, UBaseType_t uxNewPriority )带两个形参,第一个是我们要修改的任务句柄、第二个是我们需要修改的优先级。
*/
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实现和功能
不飞则已、一飞冲天,不鸣则已,一鸣惊人。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

单片有机机

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值