STM32
直播中

gvxiaot

13年用户 1149经验值
私信 关注
[问答]

请问STM32CubeMX 5.2.1如何快速设置freeRTOS?

请问STM32CubeMX 5.2.1如何快速设置freeRTOS?

回帖(1)

宋玉红

2021-11-26 15:42:46
软件版本:STM32CubeMX 5.2.1
芯片:STM32F412RETx
网上看到一些设置的文章,一般都是旧版软件的配置,所以自己设置后,记录一下
1. 选择FreeRTOS,然后下拉选择CMSIS_V2,以前也没用过,第一次用所以直接就选择高版本的





默认配置下会自动创建一个task
什么都不修改,直接生成工程会报警告





大致意思是FreeRTOS会使用Systick(而且时强制使用Systick,不能修改的),建议将SYS里的Timebase Source改成其他你不用的定时器





修改后再次点生成工程就没报错的了,但是实际还是有问题
选择NVIC,就会看到一个警告弹窗出来










由于FreeRTOS里中断优先级时从5开始的,如果原来已经设置过串口、ADC、定时器等,则这里还要修改这些中断优先级
生成工程后,编译发现一堆未定义报错
linking...STM32F412STM32F412.axf: Error: L6218E: Undefined symbol eTaskGetState (referred from cmsis_os2.o).STM32F412STM32F412.axf: Error: L6218E: Undefined symbol uxTaskGetStackHighWaterMark (referred from cmsis_os2.o).STM32F412STM32F412.axf: Error: L6218E: Undefined symbol uxTaskGetSystemState (referred from cmsis_os2.o).STM32F412STM32F412.axf: Error: L6218E: Undefined symbol vTaskDelayUntil (referred from cmsis_os2.o).STM32F412STM32F412.axf: Error: L6218E: Undefined symbol xQueueGetMutexHolder (referred from cmsis_os2.o).STM32F412STM32F412.axf: Error: L6218E: Undefined symbol xTimerPendFunctionCallFromISR (referred from cmsis_os2.o).




回到stm32CubeMx,选择FreeRTOS后再选择Include parameters,对比编译时显示未定义的函数,就会看到是禁用状态,大概给看一下后,我懒得对比,就干脆全部enable,





在生成工程,编译,还有个未定义
linking...STM32F412STM32F412.axf: Error: L6218E: Undefined symbol uxTaskGetSystemState (referred from cmsis_os2.o).




但是再Include Parameters里没有这个函数
在Keil里对整个工程搜索uxTaskGetSystemState,发现uxTaskGetSystemState定义在task.c文件里,需要条件configUSE_TRACE_FACILITY == 1满足才行





再回到stm32cubemx查看freeRTOS配置,使能USE_TRACE_FACILITY





再生成工程,编译就应该没问题了
不过我的是已经写过其他功能的工程添加FreeRTOS,所以我这边还有另一个报错
../Src/main.c(1171): error:  #247: function "HAL_TIM_PeriodElapsedCallback"  has already been defined





HAL_TIM_PeriodElapsedCallback重复定义,因为我原来已经使用过定时器,自己重载定义了HAL_TIM_PeriodElapsedCallback函数,在添加FreeRTOS时,需要修改SYS的Timebase Source为其他定时器,stm32cubemx就会自动再创建一个HAL_TIM_PeriodElapsedCallback函数,所以就重定义了,把自己定义的HAL_TIM_PeriodElapsedCallback删掉,用stm32cubemx生成的那个函数即可
至于FreeRTOS配置里的各种参数配置的意思就不说了,因为我都不熟悉,乱说误导人


举报

更多回帖

发帖
×
20
完善资料,
赚取积分