良好的开端从一份笔记开始。

1、首先从官网下载关于FreeRTOS的源码 https://sourceforge.net/projects/freertos/files/latest/download?source=files

2、下载完,进行安装,安装结束得到如下目录的文件

STM32移植到ESP32上 stm32怎么移植程序_STM32移植到ESP32上

我们需要的是FreeRTOS这个目录的文件,对于-Plus大家可以自行尝试。

3、进入FreeRTOS目录,里面会有三个文件夹,分别是Demo,Licenes,Source。在Demo中,我们能够看到多个不同平台的移植例程,可以根据自己所需要的平台进行参考使用。我们要使用的是MDK下的移植。所以选择CORTEX_STM32F103_Keil这个文件夹的内容进行参考,其实这个Demo还是很有帮助的,在后续的移植中,会发现缺少的文件都可以在这个Demo中进行直接拿来使用。

STM32移植到ESP32上 stm32怎么移植程序_M3_02

另一个文件夹是Source 这个目录下的文件主要有

STM32移植到ESP32上 stm32怎么移植程序_Source_03

include这个目录,建议在不清楚哪些要用,哪些不要用的,都可以添加进工程中,重点是这个portable文件夹,里面的东西比较多。而我们主要用到的目录有下面几个。大家可以根据自己的平台进行选择。

STM32移植到ESP32上 stm32怎么移植程序_Source_04

进入Keil中,其实里面没有东西,就是告诉你,这个目录和RVDS中的是一样的操作,所以你需要进入RVDS中,把关于你平台内核的文件拷贝过来,我所用到的是M3内核,所以拷贝后如下。还有MemMang这个文件夹记得拷贝,这个很重要,因为关于内存的管理都是在这个里面呢。

STM32移植到ESP32上 stm32怎么移植程序_M3_05

下面就是我们需要的文件整理如下:其中FreeRTOSConfig.h是在Demo中找到的,Heep_2.c是在MemMang文件夹中,Port.c是在RVDS\ARM_CM3文件夹中。

STM32移植到ESP32上 stm32怎么移植程序_M3_06

STM32移植到ESP32上 stm32怎么移植程序_编写代码_07

现在,我们需要移植的文件大概就只有这些。现在就可以建立一个简单的工程了,关于工程建立大家自行百度吧。

文件添加如下:

STM32移植到ESP32上 stm32怎么移植程序_Source_08

打开Options for Target 的 Target勾选 Use MicoLIB

STM32移植到ESP32上 stm32怎么移植程序_M3_09

在C/C++选项的Define中添加  :  STM32F10X_HD, USE_STDPERIPH_DRIVER

STM32移植到ESP32上 stm32怎么移植程序_STM32移植到ESP32上_10

接下来最重要的一步是对 startup_stm32f10x_hd.s文件进行修改,在第52行添加如下三处中断处理函数,

并分别把第76行的SVC_Handler用 vPortSVCHandler 替换

              第79行的PendSV_Handler用 xPortPendSVHandler替换

              第80行的SysTick_Handler用 xPortSysTickHandler 替换

STM32移植到ESP32上 stm32怎么移植程序_Source_11

接下来我们开始编写代码让任务运行起来

STM32移植到ESP32上 stm32怎么移植程序_Source_12