2020-10-20 任务三(一) RTOS系统初识

it2023-01-11  60

目录

一、RTOS系统是什么?

二、FreeRTOS  文件系统

文件系统

三、FreeRTOS  移植

准备工作

RTOS移植

移植验证

四、 RTOS系统的学习(4.5中断测试实验)

总结



前言

 

一、RTOS系统是什么?

FreeRTOS就是一个免费的RTOS系统。

    通过给不同的任务分配时间片以及优先级,形成多任务同时运行的错觉。

    RTOS系统时钟是由滴答定时器提供的,RTOS的系统时钟节拍应该匹配滴答定时器,其实就是设置滴答定时器的中断周期。

    由于我们使用了HAL库,HAL库里的延时函数要求滴答定时器周期为1ms,因此FreeRTOS的系统节拍应该设置为1000HZ,也就是1ms的周期  HAL→SysTicks→FreeRTOS

查阅资料的网址:http://www.freertos.org

二、FreeRTOS  文件系统

1.文件系统

Demo文件夹里面是FreeRTOS的相关历程

 虽然minifly用的STM32F429的芯片,但是可以用F407的历程,因为都是Cortem-M4F的例程

License文件夹 许可信息Source文件夹

存放RTOS的源码文件, 重点是portable文件夹,它是软硬件之间的连接桥梁,

不同的编译环境和MCU都有不同的规则,找到里面的Keil,找到RVDS,找到里面的CM4

里面有port.c文件 和 portmacro.h文件 ,这是我们所需要的

三、FreeRTOS  移植

准备工作

RTOS移植

移植验证

1.准备工作

    要移植RTOS系统,需要一个简单的基础工程作为模板,这里直接以Minifly作为例程

2.RTOS移植

准备RTOS包    

在TROS的source文件夹中,删除portable的无用部分,仅仅保留 keil mem rvds 

建立一个FreeRTOS的文件夹,将source(源码内容)拷贝进去,相当于引入了一个FreeRTOS包

如图: 蓝色部分是基础工程模板

向工程分组中添加文件 以及 c文件路径 (见F429 FreeRTOS开发手册32页)修改一些 sys  systick usart函数的定义  (要配置系统滴答定时器 为1ms 因为引入了HAL库对HAL库还不是很熟 标准库效率高 只是对一些寄存器进行了封装,HAL封装的功能更强大 但是效率会更低

3.移植验证

3.1 实验目的 

测试是否移植成功(本文仅理解一下 RTOS系统下的编程 未实际操作)

3.2 实验设计

3.3实验程序与分析

  略

注:

临界代码段:

四、 RTOS系统的学习(4.5中断测试实验)

4.1  RTOS工程实现步骤:

引入头文件 ↓ 宏定义 ↓ int main() { 初始化 //本例中是在TIMx_Init(,)中初始化了定时器配置 以及调用了函数 实现了了中断配置 以及中断服务程序的编写 ↓ 创建优先级很高的开始任务 ↓ 开启任务调度 } void startTask(void *param) { 进入临界区(); 按优先级创建一系列任务(); 删除开始任务(); 退出临界区(); }

         然后在其他 .c  .h文件中对创建的一系列任务函数进行实现。

//本例中是在TIMx_Init(,)中初始化了定时器配置 以及调用了函数 实现了了中断配置 以及中断服务程序的编写


总结

一、对实时操作系统(RTOS)的文件系统进行了学习

二、大致了解了 RTOS包 的工程移植

三、对RTOS项目工程实现过程 有了了解

最新回复(0)