第5步:也是最后一步,添加相应的头文件路径: 在原来工程模板的基础上面新添加的两个路径: 至此,RTX的移植工作就完成了,剩下就是系统配置和应用了
6.3.2 RTX操作系统配置说明RTX操作系统的配置工作是通过配置文件RTX_Conf_CM.c实现。在MDK工程中打开文件RTX_Conf_CM.c,可以看到如下图6.6所示的工程配置向导: 图6.6 RTX配置向导 1. Task Configuration 1. Number of concurrent running tasks 参数范围0 – 250 表示同时运行的最大任务数,这个数值一定要大于等于用户实际创建的任务数,空闲任务不包含在这个里面。比如当前的数值是6,就表示用户最多可以创建6个任务。 2. Number of tasks with user-provided stack 参数范围0 – 250 表示自定义任务堆栈的任务数,如果这个参数定义为0的话,表示所有的任务都是使用的配置向导里面第三个参数Task statck size大小。比如: Numberof concurrent running tasks = 6 Numberof tasks with user-provided stack = 0 表示允许用户创建6个任务,所有的6个任务都是分配第三个参数Task statck size大小的任务堆栈空间。 Numberof concurrent running tasks = 6 Numberof tasks with user-provided stack = 3 表示允许用户创建6个任务,其中3个任务是用户自定义任务堆栈大小,另外3个任务是用的第三个参数Task statck size大小的任务堆栈空间。 3. Task statck size 表示系统分配的任务堆栈大小,单位字节。 4. Check for the stack overflow 选择是否使能任务堆栈监测,选上单选框表示使能,取消单选框表示禁能。 5. Run in privileged mode 选择是否使能特权级模式,选上单选框表示使能任务工作在特权级模式,取消单选框表示任务工作在非特权级模式。特权级和非特权级在第九章有详细讲解。 2. Tick Timer Configuration 1. Hardware timer CoreSysTick 表示选择系统滴答定时器,因为M3/M4内核带有滴答定时器,一般情况下都是选用滴答定时器作为系统时钟节拍。 PeripheralTimer 表示使用外设定时器。 2. Timer clock value 表示定时器主频,单位Hz。 3. Timer tick value 表示系统时钟节拍周期,单位us。 3. System Configuration 1. Round-Robin Task switching 选择是否使能时间片调度,选上单选框表示使能时间片调度,取消单选框表示不使用时间片调度。 2. Round-Robin Timeout [ticks] 范围1 – 1000。 表示时间片的大小,单位是系统时钟节拍个数。 3. Number of user timers 范围1 – 250。 表示用户定时器个数,即软定时器个数。 4. ISR FIFO Queue size 表示ISR FIFO队列大小。中断服务程序中调用以isr_ 开头的函数时,会将请求类型存到此缓冲中。
6.3.3 RTX操作系统应用实例 通过上面对RTX操作系统的配置讲解,这里将其修改为如下图6.7所示配置: 图6.7 RTX配置向导 相对默认配置,修改了上图红色箭头所示的三个地方: 1. 任务运行在特权级模式。 2. 滴答定时器主频168MHz,这个也是STM32F407的主频。 3. 系统时钟节拍周期1ms。 修改好配置后,在main.c文件中添加如下代码,代码中简单的创建了两个用户任务: AppTaskLED任务 :LED闪烁。 AppTaskStart任务:启动任务,也是最高优先级任务,这里实现LED闪烁。
|