基于vscode搭建freertos环境
前言
目前网上windows仿真freertos的资料都是比较久远的,不太适合现有的开发,因此重新整理了一下资料.
目标:
使用Vscode进行FreeRTOS开发和仿真.
关键词: freertos, vscode,llvm,cmake,windows
环境配置
编译器目前使用的是llvm-MinGW-msvcrt:Releases · mstorsjo/llvm-mingw (github.com)
FreeRTOS使用的最新版20240601-LTS:Release 202406.01-LTS · FreeRTOS/FreeRTOS-LTS (github.com)
Vsocde就常用的插件,这里调试用的codeLLDB,自己下载下.
编译器下载了加入环境变量,这里就不细说了
代码解压后,这里只关注FreeRTOS-Kernel
代码编译
使用code打开FreeRTOS-Kernel\examples\cmake_example,使用cmaketools正常配置,选择windows能用的编译器即可.

然后需要配置windows的port.c. 之前移植时需要自己加入编译目录,现在可以直接在Cmakelists.txt中配置.
# Select the heap port. values between 1-4 will pick a heap.
set(FREERTOS_HEAP "4" CACHE STRING "" FORCE)
# Select the native compile PORT
set(FREERTOS_PORT "MSVC_MINGW" CACHE STRING "" FORCE)
修改成MSVC_MINGW
然后还要修改编译器设置
# Suppressions required to build clean with clang.
$<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-unused-macros>
$<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-padded>
$<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-missing-variable-declarations>
$<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-covered-switch-default>
$<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-extra-semi-stmt>
$<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-unsafe-buffer-usage>
$<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-missing-noreturn>
$<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-cast-align> )
不然会报错
然后就可以编译运行了
这里在main.c里修改一些代码
static void exampleTask( void * parameters )
{
/* Unused parameters. */
( void ) parameters;
for( ; ; )
{
printf("example test\r\n");
/* Example Task Code */
vTaskDelay( 100 ); /* delay 100 ticks */
}
}
运行结果:
."FreeRTOS-Kernel/examples/cmake_example/build/example.exe"
Example FreeRTOS Project
example test
example test
example test
example test
example test
调试
新建launch.json
加入以下代码
{
"version": "0.2.0",
"configurations": [
{
"name": "windows",
"type":"lldb",
"request": "launch",
"program": "${command:cmake.launchTargetPath}",//通过cmake获取可执行文件名
"args": [],
"cwd": "${workspaceFolder}",
},
]
}
然后就可以调试了

集成
很多时候freertos是作为依赖集成到其他项目中使用,要在windows上集成很简单.
新建Cmake项目
随便新建一个Cmake项目:
- 在vscode中按下
ctrl + shift + P - 找到
Cmake:Quick start, 创建C项目创建可执行文件即可
加入依赖库
将下载的FreeRTOS-Kernel复制一份到项目根目录下
将cmake_example的CmakeLists.txt改名为freertos.cmake复制到项目根目录下
将cmake_example的main.c复制到项目根目录下,替换原有main.c
将template_configuration里的FreeRTOSConfig.h复制一份到项目根目录下
项目文件如下文所示
rtos_cmake>ls
CMakeLists.txt FreeRTOS-Kernel freertos.cmake FreeRTOSConfig.h main.c
修改配置
打开freertos.cmake,主要修改以下点,注意编译器配置按照上文修改
#project(example)
#set(FREERTOS_KERNEL_PATH "../../")
set(FREERTOS_KERNEL_PATH "./FreeRTOS-Kernel")
# Add the freertos_config for FreeRTOS-Kernel
add_library(freertos_config INTERFACE)
target_include_directories(freertos_config
INTERFACE
# "../template_configuration"
"./"
)
...
#add_executable(${PROJECT_NAME}
# main.c
#)
主要是把原来的可执行文件配置移除,把路径修改为实际路径
打开CmakeList.txt,将freertos引入进来.注意放到add_executable下面,不然会报错
cmake_minimum_required(VERSION 3.10.0)
project(hello VERSION 0.1.0 LANGUAGES C)
add_executable(hello main.c)
include(${CMAKE_CURRENT_SOURCE_DIR}/freertos.cmake)
然后就可以编译生成了

浙公网安备 33010602011771号