【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了。
	  }
}
相关推荐
✎ ﹏梦醒͜ღ҉繁华落℘5 天前
单片机基础知识---stm32单片机的优先级
stm32·单片机·mongodb
zd8451015005 天前
RS485 总线详解
单片机·嵌入式硬件
牛根生同志5 天前
SPI数据收发的时候 TXE与RXNE标志位置位的时机
stm32·spi·transfer
goldenrolan5 天前
学习型红外控制系统稳定性挂测工装专项总结
软件测试·python·stm32·嵌入式·红外
✎ ﹏梦醒͜ღ҉繁华落℘5 天前
编程基础 --高内聚,低耦合
c语言·单片机
科芯创展5 天前
1A,1MHz,30VIN,XZ4115,降压恒流LED驱动芯片
单片机·嵌入式硬件
集芯微电科技有限公司5 天前
四通道2A输出集成功率电感降压模块专为紧凑型方案设计
人工智能·单片机·嵌入式硬件·生成对抗网络·计算机外设
踏着七彩祥云的小丑5 天前
嵌入式测试学习第 37 天:异常场景测试:断电、拔插、干扰、非法指令
单片机·嵌入式硬件·学习
CC城子5 天前
STM32H7_FDCAN 驱动笔记
stm32·can·canfd
意法半导体STM325 天前
【官方原创】如何为STM32CubeMX2配置Visual Studio Code配置方案
vscode·stm32·单片机·嵌入式硬件·策略模式·stm32cubemx·嵌入式开发