目录
前言
一、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项目工程实现过程 有了了解