相对延时

void vTaskDelay(TickType_t xTicksToDelay)

void UsarT1_Task(void *argument)
{
  /* USER CODE BEGIN UsarT1_Task */
  /* Infinite loop */
  for(;;)
  {
		HAL_Delay(2000);
		printf("abc\r\n");			
    vTaskDelay(5000);//也可用osDelay(5000);

  }
  /* USER CODE END UsarT1_Task */
}
//相对延时是2+5=7秒

绝对延时

void vTaskDelayUntil(TickType_t *pxPreviousWakeTime, TickType_txTimeIncrement)

(记录任务上一次唤醒的系统节拍值;需要延时的tick周期数)

TickType_t xTaskGetTickCount(void)

//获取系统启动后的累计节拍值用于vTaskDelayUntil的第一个参数获取


void delay_Task04(void *argument)
{
  /* USER CODE BEGIN delay_Task04 */
	TickType_t A =xTaskGetTickCount();
  /* Infinite loop */
  for(;;)
  {
		
		HAL_Delay(2000);
		printf("delay\r\n");			
    vTaskDelayUntil(&A,5000);
		//osDelayUntil(5000);
  }
  /* USER CODE END delay_Task04 */
}
//绝对延时是5秒

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐