因此，为了添加freeRTOS，我们来管理运行时环境。 1
我们来到RTOS，在这里我们可以选择免费的RTO或micrium。我们选择freeRTOS 2
我们只添加基本文件。 3
对于此示例，我们需要调用。 4
我们需要一个配置文件。 5
我们需要计时器，然后需要堆。因此，当我们单击此处时，一切都已设置。 6
在这里，如果您说CMSIS RTOS，则只需单击以选择免费的RTOS。这里应该是免费的RTOS 7
配置freeRTOS 8
我将在以后的部分中教您如何使用CMSIS RTOS。 9
在第一节课中，我们使用了核心freeRTOS。 10
完成后，我们单击 11
好的，然后我们重新构建我们的项目以确保一切正常。 12
如您所见，一切都以相同的方式工作。 13
零错误，因此添加头文件 14
FreeRTOS的所有操作，我们需要右键单击，包括头文件，右键单击，然后插入包含 15
文件，然后我们来到这里，然后我们要添加freeRTOS点h，然后添加 16
项目，我们将使用任务。 17
因此，我们还必须添加任务点h。 18
我将在这里单击。 19
我这样添加 20
是的 21
包括在内。 22
您可以看到是否在这里观察到，在我们的项目树下，有一个新的名为RTOS的树， 23
这里封装了来自免费RTOS的所有文件，我们将花费大量时间进行研究。 24
所以，一旦完成，我们将创建两个任务，然后将蓝色LED闪烁成一个，然后闪烁 25
红色LED 26
这将是我们非常激动人心的课程的第一个实时应用程序。 27
因此，让我们继续。 28
因此，要在freeRTOS中创建任务，我们需要使用xtask create API。 29
我们使用此API创建所需的任务数量，然后使用V任务启动调度程序 30
启动调度程序。 31
因此，让我们从创建任务开始，我们创建第一个任务。在这里创建，在这里创建一切 32
在while 1循环之外。 33
实际上，完成后，一会儿将为空，因为代码无法到达此处。立刻 34
调度程序已启动，整个区域变得无法访问。因此，我们通过调用xtask create来创建任务 35
像这样。该函数接受六个参数。 36
第一个参数是任务功能，即代码 37
将作为任务执行。 38
每个任务都需要一个任务功能，而任务功能只是无限循环中运行的功能。 39
正如我们将看到。 40
第二个参数是我们可以为任务指定的符号名称。 41
所以我要在这里创建一个任务函数 42
我将这个任务称为蓝色任务。 43
我只是说... 44
让我们给它一个更具描述性的名称。 45
蓝色LED控制器任务。 46
这就是任务功能。 47
因此，这里有红色标记，因为我们尚未创建函数。 48
因此，当我们创建它时，它会消失，我们可以给它起一个描述性的名称，例如蓝色的led控制器。 49
因此，第一个文档是任务函数，第二个参数是任务名称。 50
第三个参数是任务的堆栈大小，我们在这里给它一个一百以上的大小， 51
单位是32位 52
因此，这里的百位表示为堆栈分配32位乘以100。 53
请记住，三十二位被称为一个单词，因此您在这里在freeRTOS中，堆栈的大小为单词大小。 54
所以我这里有一百个单词，一个单词表示4个字节。 55
所以这里有4个字节乘以100 56
我们的筹码量 57
所以我们有400个字节的堆栈 58
本质上，如果您进行计算。 59
是的。 60
移动第四个参数是我们传递给任务函数的参数。所以我们将探索 61
稍后如何使用此paramita，但在本课程中我们不使用它，因此我只想输入null 62
像这样 63
在此之后，下一个参数是优先级。 64
因此，在freeRTOS中，我们可以为任务分配许多优先级。而且数字越大，越重要 65
任务是。 66
与其他实时内核不同，freeRTOS的优先级低于第五。 67
第五名本质上具有更高的优先级。 68
所以我在这里放了一个。 69
是的 70
实际上，我们可以设置所需的最高优先级 71
在我们的freeRTOS配置点h文件中，我们将在后面进行探讨。 72
因此，一旦我们设置了优先级，最后一个参数就是一个句柄，我们可以将其赋予我们创建的任务。 73
但是我们稍后将探讨如何使用该句柄，因为这只是一个入门项目。 74
我们可以在这里将其分配为null。 75
空意味着我们不需要这个。 76
因此，我们创建了这个。我们已经创建了这个任务，它被称为蓝色控制器任务，这就��说明 77
这只是出于调试目的， 78
这是堆栈大小。 79
在这里，我们没有向该任务传递任何参数。我们不想创建任务句柄的第一要务 80
为了它。 81
因此，我们要做的就是到这里创建我们说过要创建的任务功能。蓝色LED控制器 82
任务。有论点是虚无的 83
实际上，这不是无效的。 84
它需要一个指向空的指针。 85
所以明星光伏参数 86
因此，这是在freeRTOS中这样编写任务功能的方式。 87
就像我说的那样，它只是一个带有无限循环的普通函数，而1就是这样。 88
就是这样。蓝色LED控制器任务。 89
因此，要使其能够实现，我们只需将原型放在此处，因为我们在此处声明了它。如果我放 90
这个原型，您会看到红线消失。 91
对。 92
因此，我们创建了第一个任务。 93
现在，我们将创建另一个任务。 94
这将是红色的LED控制器，我要做的就是将这条指令复制到此处，然后放入 95
在这里，更改单词以适合红色。我将其更改为红色，并将其也更改为红色。 96
因此，我给了他们相同的优先级，因此它们将以某种分时的方式运行 97
方式。 98
而且因为我们还没有创造我们在这里拥有的东西， 99
我将复制一份， 100
这是红色任务的任务功能。然后我将此处的单词blue更改为red。 101
将原型放在那里。通过采取这个，并像这样放在这里。 102
大。 103
因此，现在我们要做的就是获取主要功能的内容并将其放入任务功能中 104
所以我将在这里复制此内容。然后我将其实际带到这里，然后将其删除。 105
我本来可以剪下来的。但是我们只想切换红色LED 106
因此，我将要清洁所有其他LED并像这样在其中保留红色字样。 107
我将为此做同样的事情。我要复制，这是蓝色的。 108
我们必须将其更改为蓝色 109
, 110
这是蓝色的任务 111
当然，我们为延迟创建的局部变量 112
我们只需要剪切它，然后将其像这样粘贴在这里，然后也将其粘贴在这里。 113
我们在这里使用它，我们已经设置好了 114
一切都完成了。 115
我们现在要做的就是启动调度程序。 116
因此，就像我说的是空的。 117
所以要启动调度程序 118
我们要做的就是调用v任务 119
像这样启动调度程序。 120
现在，我们只需单击此处即可重建项目。 121
完成此操作后，我们将下载到板上。 122
如您所见，只有红色和蓝色的LED闪烁。他们在实时内核中闪烁， 123
实时内核是控制它们的关键。 124
所以这是一个入门项目，我们将探索更多有趣的事物， 125
更高级的零件。这是一个非常流行的实时内核， 126
FreeRTOS，这是本课程的全部内容，我将在下一课中与您见面。