【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了。
	  }
}
相关推荐
笨笨饿9 小时前
29_Z变换在工程中的实际意义
c语言·开发语言·人工智能·单片机·mcu·算法·机器人
清风66666611 小时前
基于单片机的智能药物盒设计与实现
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
李永奉11 小时前
杰理芯片SDK-详细讲解AC695N/AC696N芯片SDK中APP模式流程
单片机·嵌入式硬件·物联网·语音识别
笨笨饿11 小时前
30_泰勒级数
c语言·stm32·嵌入式硬件·线性代数·机器学习·自动化·概率论
季鹏EthanJ12 小时前
VCC上电慢导致STM32无法复位
stm32·单片机·嵌入式硬件·上电复位故障·bor
点灯小铭13 小时前
基于单片机的太阳能12V蓄电池光控时控路灯智能控制器设计
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
LCG元13 小时前
STM32实战:基于STM32F103的智能体重秤(HX711+OLED)
stm32·单片机·嵌入式硬件
小白zlm13 小时前
预畸变双线性变换
单片机·嵌入式硬件·算法·电机控制
无垠的广袤13 小时前
【Titan RA8P1 Board】J-Link 调试
单片机·嵌入式·开发板·调试器·jlink
12.=0.16 小时前
【stm32_3】嵌入式软件系统架构
stm32·单片机·嵌入式硬件