十. 如何移植FreeRTOS到STM32中(精简版-全是干货!)
这里我们直接上干货。
首先大家下打开附件的模板,直接研究模板文件。

除了FreeRTOS文件夹之外,其它文件都是STM32裸机程序,我们已经很熟悉,这里不再赘述。
这里先说一下User这个文件夹,里面有一个FreeRTOSConfig.h的头文件也是我们添加进去的,它是位于FreeRTOS源码里面的。参考下面的路径:

把该头文件放在user 文件夹,见名知义我们就可以知道里面存放的文件都是用户自己编写的。
接下来就是重头戏,是我们移植中的重中之重。
我们在FreeRTOS文件夹下新建3个文件夹,分别为src、include和port。
1.include文件夹下的内容是我们需要用到的FREERTOS的一些头文件,被COPY过来的这些文件在FreeRTOS源码的位置是:

2.src文件夹用于保存FreeRTOS和核心源文件,被COPY过来的这些文件在FreeRTOS源码的位置是:

3.port文件夹用于保存内存管理以及处理器架构相关代码,被COPY过来的这两个文件夹在FreeRTOS源码的位置是:

这两个文件夹里面的主要内容我也摘出来:


接下来就是编译器的设置了,我们打开工程文件:

在工程中新建组1和组2,并且将程序文件添加进去,完成后效果如下图:

最后我们指定下头文件路径:

由于一开始我们只需要FreeRTOS的简单功能,所有FreeRTOSConfig.h文件我们要做一系列的修改。(这里建议直接使用我们已经修改过的头文件)
还有stm32f4xx_it.c程序文件也需要修改,FreeRTOS 为开发者考虑得特别多,PendSV_Handler()与 SVC_Handler()这两个很重要的函数都帮我们实现了, 在 port.c 文件中已经实现 xPortPendSVHandler()与 vPortSVCHandler()函 数 , 防 止 我 们 自 己 实 现 不 了 , 那 么 在 stm32f4xx_it.c 中 就 需 要 我 们 注 释 掉PendSV_Handler()与 SVC_Handler()这两个函数了。
最后我们修改以下main文件。详细参照附件程序。
当然这也太过简单了,不过学习是一个循序渐进的过程,里面的很多程序是什么含义我们还都不太了解,但是没有关系,随着我们学习的深入,这些程序或者是宏定义都会涉及到,疑惑也会迎刃而解了。
更多推荐

所有评论(0)