【STM32 FreeRTOS】时间延时函数

相对延时:指每次延时都是从任务执行函数vTaskDelay()开始,延时指定的时间结束。

绝对延时:指每隔指定的时间,执行一次调用vTaskDelayUntil()函数的任务。换句话说:任务以固定的频率执行。

c 复制代码
void StartMyTask1(void *argument)
{
	  printf("StartMyTask1\r\n");

	  for(;;)
	  {
		  HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin);
		  for(int i=0;i<100;i++)
		  {
			  printf("Task1...\r\n");
		  }
		  //for循环耗时100ms左右,所以任务循环周期为600ms左右,
		  //如果有较高优先级任务抢占,那么时间还会增加
		  vTaskDelay(pdMS_TO_TICKS(500));//500ms
	  }
}
c 复制代码
void StartMyTask2(void *argument)
{
//	  printf("StartMyTask2\r\n");

	  TickType_t lastWakeTime=0;
	  lastWakeTime = xTaskGetTickCount();
	  //在这里首先就获取了tick
	  for(;;)
	  {
		  HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin);
          for(int i=0;i<100;i++)
          {
        	  printf("Task1...\r\n");
          }
		  vTaskDelayUntil(&lastWakeTime,pdMS_TO_TICKS(500));
		  //从lastWakeTime的代码,到这里为止,耗时500个tick
		  //如果中间的代码耗时时间已经大于500个tick了,
		  //那么在vTaskDelayUntil函数中就不需要阻塞了,整个任务循环耗时也就是大于500个tick了。
	  }
}
相关推荐
cmpxr_3 小时前
【单片机】STM32的启动流程(Keil)
stm32·单片机·嵌入式硬件
广药门徒3 小时前
嵌入式常用通信协议速率对比及布线要点全解析
单片机·嵌入式硬件
cmpxr_5 小时前
【单片机】RAM和ROM
单片机·嵌入式硬件
yong99907 小时前
可自动调整的24V步进电机设计方案
单片机·嵌入式硬件
R6bandito_8 小时前
自实现FLASH读取函数中的隐式类型转换bug踩坑记录
c语言·开发语言·经验分享·stm32·单片机·mcu·bug
Bin Watson8 小时前
STM32 HRTIM 学习心得(3):SVPWM 输出
stm32·单片机·嵌入式硬件
perseverance529 小时前
MCU串口实现串行flash编程器功能
单片机·flash编程
421!9 小时前
C 语言学习笔记——11(函数指针与指针函数)
c语言·开发语言·笔记·单片机·学习
Redemption9 小时前
嵌软面试每日一阅----freeRTOS(三)
stm32·单片机·嵌入式硬件·mcu·物联网·面试·51单片机
篮子里的玫瑰10 小时前
STM32 GPIO八种输入输出模式深度解析:原理、区别与选型指南
stm32·单片机·嵌入式硬件