CubeMX中啟用FreeRTOS后, 生成的FreeRTOS源代碼并不在Src文件夾內(nèi), 所以PIO并不認(rèn)FreeRTOS的源代碼. PIO官方論壇上有人提到了這個(gè)問題: Using FreeRTOS in PlatformIO
CubeMX生成的FreeRTOS代碼目錄位于${PROJECT}/Middleware/FreeRTOS/
內(nèi), 所以:
- win下比較丑的解決方案是將
${PROJECT}/Middleware/FreeRTOS
文件夾復(fù)制到${PROJECT}/Src
下. 但是每次重新生成代碼都要再復(fù)制一遍 - Mac和Linux下可以創(chuàng)建軟連接(Win下對(duì)目錄創(chuàng)建軟連接的方法我統(tǒng)統(tǒng)嘗試失敗).
然后修改platformio.ini
,添加build_flags
:
[env:genericSTM32F103RC]
platform = ststm32
board = genericSTM32F103RC
framework = stm32cube
monitor_speed = 115200
build_flags = ${common.build_flags}
upload_protocol = stlink
debug_tool = stlink
[common]
build_flags = -std=gnu99 -Wl,-u,_printf_float
-IInc
-ISrc/FreeRTOS/Source/CMSIS_RTOS
-ISrc/FreeRTOS/Source/include
-ISrc/FreeRTOS/Source/portable/GCC/ARM_CM3
然后即可正常編譯.