1.在middlewares下新建FreeRTOS文件夹,下面新建source文件夹,将.c和.h文件分别放入src和inc文件夹

2在freeRTOS文件夹下新建portable文件夹,将对应的移植文件放入,记得把管理堆的文件也放进去

3找到对应的config.h文件,里面是用来裁剪所需代码的,放到一个易于管理观察的地方即可,记得插入三个必要的宏

4将SVC和PendSV函数注释掉,不然会有两个强函数冲突

5.将对应文件加入工程,cmake先将头文件的路径写入MX_Include_Dirs,${CMAKE_CURRENT_SOURCE_DIR}/../../Middlewares/FreeRTOS/core/inc

    ${CMAKE_CURRENT_SOURCE_DIR}/../../Middlewares/FreeRTOS/portable/GCC

再将freerots库的源文件编入

file(GLOB FreeRTOS_Src

CONFIGURE_DEPENDS

${CMAKE_CURRENT_SOURCE_DIR}/../../Middlewares/FreeRTOS/core/src/*.c

${CMAKE_CURRENT_SOURCE_DIR}/../../Middlewares/FreeRTOS/portable/GCC/port.c

${CMAKE_CURRENT_SOURCE_DIR}/../../Middlewares/FreeRTOS/portable/MemMang/heap_4.c

)

将这个freertos作为静态库加入变量,并创建对应的静态库

set(MX_LINK_LIBS

    STM32_Drivers

    ${TOOLCHAIN_LINK_LIBRARIES}

    USB_Device_Library

    FreeRTOS

)

# Create FreeRTOS static library

add_library(FreeRTOS OBJECT)

target_sources(FreeRTOS PRIVATE ${FreeRTOS_Src})

target_link_libraries(FreeRTOS PUBLIC stm32cubemx)

6.加入头文件,并从外部调用函数

#include "FreeRTOS.h"

#include "task.h"

extern void xPortSysTickHandler(void);

7.在systick中加入以下代码

if (xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED) {

    xPortSysTickHandler();

  }

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐