FREERTOS任务创建

        

vTaskDelay()对应 FreeRTOS 原生任务,osDelay()对应 CMSIS-RTOS 任务

os:

1、声明新任务的句柄和属性

osThreadId_t ledTaskHandle;
const osThreadAttr_t ledTask_attributes = {
  .name = "ledTask",
  .stack_size = 128 * 4,
  .priority = (osPriority_t) osPriorityLow, // 优先级比默认任务低 osPriorityNormal
};

为新任务定义 标识符(句柄)和属性(名称、栈大小、优先级)。

2、声明任务函数原型

void StartLedTask(void *argument); // 声明任务函数

在使用函数前进行声明,符合 C 语言规范。

3、创建任务

ledTaskHandle = osThreadNew(StartLedTask, NULL, &ledTask_attributes);

这是创建任务的核心步骤,调用osThreadNew()函数来创建并启动任务。

4、实现 LED 任务函数

void StartLedTask(void *argument)
{
  for(;;)
  {
    HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin); // 这里放任务
    osDelay(LED_TASK_DELAY); // 延时500ms
  }
}

任务函数包含任务的具体执行逻辑,必须是一个无限循环,并包含适当的延时。

5、任务调度

        FreeRTOS 内核会根据任务优先级自动进行调度,osDelay()函数是任务主动让出 CPU 的关键。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值