琢磨几天终于完美运行,但新问题又来了。在使用 FreeRTOS 时 cubemx 相同的配置,生成的代码使用Keil uVision5 运行正常,使用vscode编译正常,但使用却有些问题。
-
include path和browse path问题。
以为一个 "${workspaceFolder}/**"完美搞定,那只是你以为,而现实却是很残酷,各类找不到。所以你还是得老老实实给补全,附上我的c_cpp_properties :{ "configurations": [ { "name": "STM32", "includePath": [ "${workspaceFolder}/**", "${workspaceFolder}/Drivers/STM32F4xx_HAL_Driver/Inc", "${workspaceFolder}/Core/Src", "${workspaceFolder}/Core/Inc", "${workspaceFolder}/Drivers/CMSIS/include", "${workspaceFolder}/Drivers/CMSIS/Device/ST/STM32F4xx", "${workspaceFolder}/Middlewares/Third_Party/FreeRTOS/Source/include", "${workspaceFolder}/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F", "${workspaceFolder}/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS", "${workspaceFolder}/Drivers/CMSIS/Device/ST/STM32F4xx/Include" ], "defines": [ "STM32F4", "STM32F407xx", "STM32F40_41xxx", "USE_HAL_DRIVER" ], "windowsSdkVersion": "10.0.19041.0", "compilerPath": "D:/cygwin64/bin/gcc.exe", "cStandard": "c99", "cppStandard": "c++17", "intelliSenseMode": "gcc-arm", "compilerArgs": [ "DUSE_HAL_DRIVER ", "DSTM32F407xx" ], "browse": { "limitSymbolsToIncludedHeaders": true, "path": [ "${workspaceFolder}/**", "${workspaceFolder}/Drivers/STM32F4xx_HAL_Driver/Inc", "${workspaceFolder}/Core/Src", "${workspaceFolder}/Core/Inc", "${workspaceFolder}/Drivers/CMSIS/include", "${workspaceFolder}/Drivers/CMSIS/Device/ST/STM32F4xx", "${workspaceFolder}/Middlewares/Third_Party/FreeRTOS/Source/include", "${workspaceFolder}/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F", "${workspaceFolder}/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS", "${workspaceFolder}/Drivers/CMSIS/Device/ST/STM32F4xx/Include", "" ] } } ], "version": 4 }
-
未定义问题。
代码段是 defines ,差不多全网搜了一遍都出现未定义情况。最后想起我使用另一个ide的时候没有这个问题。使用 PlatformIO时完全正常。上面代码中是 F407 的配置,假如在你上面依然错误,最快的办法就是安装一个PlatformIO,新建一个工程,把里面的defines复制过来就完美了。但PIO 对中间件支持不好,只有放弃(个人技术较烂,抱歉!)。 -
其实步骤
- 使用 cubemx 生成驱动文件, project --> Toolchain/IDE --> Makefile --> GENERATE CODE
- 增加你的程序
- 在终端中 make (如果没有错误的话,恭喜你)速度和uVision差不多
- 如果你是 ST-LINK 直接使用 STM32 ST-LINK Utility 工具下载到开发板
工具栏中的大图标的第六个是 Program verify ,选好你工程目录中的 build 中的 hex 后直接 Start - 看到 Verification...OK 恭喜你成功了。
文章评论