【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了。
	  }
}
相关推荐
晶振厂家-晶发电子2 天前
晶振在5G时代的角色:高精度时钟的核心支撑
单片机·嵌入式硬件·5g·晶振·电子元器件·晶振知识
F137298015572 天前
WD5030A 芯片,12V降5V,输出电流12A,电路设计
stm32·单片机·嵌入式硬件·汽车·51单片机
小莞尔2 天前
【51单片机】【protues仿真】基于51单片机的篮球计时计分器系统
c语言·stm32·单片机·嵌入式硬件·51单片机
三佛科技-187366133972 天前
分享机械键盘MCU解决方案
单片机·嵌入式硬件·计算机外设
李永奉2 天前
51单片机-使用IIC通信协议实现EEPROM模块教程
单片机·嵌入式硬件·51单片机
小莞尔2 天前
【51单片机】【protues仿真】 基于51单片机八路抢答器系统
c语言·开发语言·单片机·嵌入式硬件·51单片机
bing_feilong2 天前
STM32精准控制水流
单片机·嵌入式硬件
Hello_Embed2 天前
STM32HAL 快速入门(二十):UART 中断改进 —— 环形缓冲区解决数据丢失
笔记·stm32·单片机·学习·嵌入式软件
矢志不移7923 天前
裸机开发 时钟配置,EPIT
单片机·嵌入式硬件
清风6666663 天前
基于STM32的APP遥控视频水泵小车设计
stm32·单片机·mongodb·毕业设计·音视频·课程设计