STM32Cube_FW_F1_V1.8.6
使用FreeRTOS V2
会出现cmsis_os2.c
找不到freertos_mpool.h
和freertos_os2.h
引用报错,
从CubeMax仓库路径
..\Repository\STM32Cube_FW_F1_V1.8.6\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2
拷贝文件freertos_mpool.h
和freertos_os2.h
到项目文件夹
\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2
中,
编译,在freertos_os2.h
出现新的报错
../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/freertos_os2.h(134): error: #35: #error directive: "Definition INCLUDE_xTaskGetCurrentTaskHandle must equal 1 to implement Thread Management API."#error "Definition INCLUDE_xTaskGetCurrentTaskHandle must equal 1 to implement Thread Management API."
我的做法是注释掉该错误定义,如下
出现新的报错
out\_out.axf: Error: L6200E: Symbol SysTick_Handler multiply defined (by port.o and cmsis_os2.o).
打开FreeRTOSConfig.h
找到最后的这段代码,并注释SysTick_Handler
定义
#define xPortSysTickHandler SysTick_Handler
//注释如下
// #define xPortSysTickHandler SysTick_Handler
再次编译,成功