【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了。
	  }
}
相关推荐
小柯博客11 分钟前
从零开始打造 OpenSTLinux 6.6 Yocto 系统 - STM32MP2(基于STM32CubeMX)(四)
stm32·单片机·嵌入式硬件·开源·嵌入式·yocto·stm32mp2
三佛科技-1341638421225 分钟前
KP3111LGA/KP3111LPA/ KP3111SPA高精度5V220MA离线式PWM功率开关 典型电路,三者对比
单片机·物联网·智能家居·pcb工艺
小小的代码里面挖呀挖呀挖26 分钟前
杰理蓝牙耳机开发 -- 单线级联RGB幻彩灯控制
笔记·单片机·物联网·学习·iot
KWTXX42 分钟前
用逻辑分析仪验证 ,关闭端口时钟则单片机无法正常工作
单片机·嵌入式硬件
从零点1 小时前
光耦电路原理分析
单片机·嵌入式硬件
Rorsion1 小时前
数电(微机原理基础章节)
单片机·微机原理·备考ing
偶像你挑的噻10 小时前
13-Linux驱动开发-中断子系统
linux·驱动开发·stm32·嵌入式硬件
偶像你挑的噻13 小时前
Linux应用开发-9-信号
linux·stm32·嵌入式硬件
没有医保李先生14 小时前
STM32 Hal库的Uart串口接受
stm32·单片机·嵌入式硬件
炸膛坦客14 小时前
FreeRTOS 学习:(十二)“任务创建” 和 “堆栈” 的动静态区分
freertos·实时操作系统·嵌入式软件