freeRTOS总结(九)时间管理

1、延时函数介绍

在这里插入图片描述
相对延时:指每次延时都是从执行函数vTaskDelay()开始,直到延时指定的时间结束
绝对延时:指将整个任务的运行周期看成一个整体,适用于需要按照一定频率运行的任务
在这里插入图片描述
(1)为任务主体,也就是任务真正要做的工作
(2)是任务函数中调用vTaskDelayUntil()对任务进行延时
(3)为其他任务在运行

3,延时函数演示实验(掌握)

1、实验目的:学习 FreeRTOS 相对延时和绝对延时API 函数的使用,并了解其区别
2、实验设计:将设计三个任务:start_task、task1,task2
三个任务的功能如下:
start_task 用来创建task1和task2任务
task1 用于展示相对延时函数vTaskDelay ( )的使用
task2 用于展示绝对延时函数vTaskDelayUntil( )的使用
为了直观显示两个延时函数的区别,将使用LED0(PB1) 和 LED1(PB0) 的翻转波形来表示

void task1( void * pvParameters )
{

		while(1)
		{
			LED0_TOGGLE();
			 delay_ms(20);
			vTaskDelay(500);
		}
}
char task_buff[500];

/* 任务二,演示绝对延时函数 */
void task2( void * pvParameters )
{
    TickType_t xLastWakeTime;
    xLastWakeTime = xTaskGetTickCount();
    while(1)
    {
        LED1_TOGGLE();      /* PB0 */
        delay_ms(20);
        vTaskDelayUntil(&xLastWakeTime,500);
    }
}

任务一的相对延时就是520ms左右 (这里存在优先级抢占时间不一定准确)任务2是500ms固定周期运行

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值