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