推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

LED闪烁多任务控制.docx

资料介绍

实验 01LED 闪烁多任务控制

实验说明

实验概述

本实验是 FreeRTOS 入门的第一个实验,旨在通过最简单的 LED 闪烁控制,帮助初学者理解 FreeRTOS 多任务调度机制的核心概念。在裸机编程中,LED 闪烁通常通过在主循环中插入延时来实现,这种方式下 CPU 在延时期间无法处理其他任务,效率低下。而在 FreeRTOS 中,我们可以将不同的功能封装为独立的任务,由操作系统内核统一调度,实现多任务并发执行。

实验原理

FreeRTOS 是一个抢占式实时操作系统内核。当系统中有多个任务时,高优先级任务会优先获得 CPU 使用权,同等优先级的任务则按照时间片轮转的方式交替执行。本实验创建了两个任务:任务 1 控制 LED1 500ms 间隔闪烁,任务 2 控制 LED2 1000ms 间隔闪烁。这两个任务具有相同的优先级,因此它们会按照时间片轮流获得 CPU 执行权。当任务调用 vTaskDelay() 函数时,该任务会主动进入阻塞状态,将 CPU 让给其他就绪任务,直到延时时间到达后重新进入就绪状态。

关键知识点

1. 任务创建xTaskCreate() 是创建任务的核心 API,参数包括任务函数指针、任务名称(调试用)、栈深度(以字为单位)、传递给任务函数的参数、任务优先级以及任务句柄指针。

2. 任务延时vTaskDelay() 使调用任务进入阻塞状态,参数为需要延时的系统节拍数。pdMS_TO_TICKS() 宏将毫秒值转换为节拍数,前提是系统节拍频率 configTICK_RATE_HZ 设置为 1000Hz

3. 任务调度FreeRTOS 采用基于优先级的抢占式调度策略。当更高优先级的任务就绪时,当前运行的任务会被立即抢占。同等优先级任务之间则按照时间片轮转调度,每个任务运行一个时间片后自动切换到下一个就绪任务。

4. 栈空间分配:每个任务拥有独立的栈空间,用于保存局部变量和函数调用上下文。栈空间过小会导致栈溢出,过大则浪费内存,需要根据任务的实际需求合理设置。


部分文件列表

文件名 大小
实验01_LED闪烁多任务控制.docx 38K

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单
  • 21下载积分 打赏65.00元   3天前

    用户:xzxbybd

  • 21下载积分 打赏60.00元   3天前

    用户:jh0355

  • 21下载积分 打赏60.00元   3天前

    用户:w178191520

  • 21下载积分 打赏20.00元   3天前

    用户:jh03551

  • 21下载积分 打赏20.00元   3天前

    用户:sun2152

  • 21下载积分 打赏20.00元   3天前

    用户:kk1957135547

  • 21下载积分 打赏25.00元   3天前

    用户:w1966891335

  • 21下载积分 打赏20.00元   3天前

    用户:xuzhen1

  • 21下载积分 打赏15.00元   3天前

    用户:x15580286248

  • 21下载积分 打赏25.00元   3天前

    用户:pcb

  • 21下载积分 打赏20.00元   3天前

    用户:bhacker

  • 21下载积分 打赏15.00元   3天前

    用户:liqiang9090

  • 21下载积分 打赏25.00元   3天前

    用户:有理想666

  • 21下载积分 打赏15.00元   3天前

    用户:godbox

  • 21下载积分 打赏15.00元   3天前

    用户:aetek

  • 21下载积分 打赏5.00元   3天前

    用户:mulanhk

  • 21下载积分 打赏5.00元   3天前

    用户:JuneLin61

  • 21下载积分 打赏5.00元   3天前

    用户:ccc6188

  • 21下载积分 打赏5.00元   3天前

    用户:木集盒

推荐下载