网上看了一下,发现用CubeIDE的比较少,几乎没有找到用这个IDE集成开发FreeRTOS的,于是我便踩坑尝试了一下。
- FreeRTOS: V9.0
- IDE: STM32CUBEIDE
- MCU: STM32F103C8T6
- 工程模版: STM32CubeMX 生成 HAL 库裸机工程
两个Task任务,实现点亮频闪LED灯~
已经移植上机测试过了,直接编译运行即可。
本文仅记录一下关键步骤,详细移植可以看
使用STM32CubeIDE 进行 FreeRTOS 手动移植F103系列最小系统
-
将FreeRTOS官方源码模版其目录下的
FreeRTOSConfig.h
宏定义头文件复制到我们项目中FreeRTOS/include/
文件夹下 -
修改宏定义
// 以下是变更原配置参数,否则时钟拉起不了
#define configUSE_PREEMPTION 1
#define configUSE_IDLE_HOOK 0
#define configUSE_TICK_HOOK 0 //Suroy: 启用报错,于是关了 22.2.8
#define configCPU_CLOCK_HZ ( ( unsigned long ) 72000000 )
#define configTICK_RATE_HZ ( ( TickType_t ) 1000 )
- 新增宏定义
/* Suroy: fix some error */
#define INCLUDE_xTaskGetCurrentTaskHandle 1
#define xPortPendSVHandler PendSV_Handler
#define xPortSysTickHandler SysTick_Handler
#define vPortSVCHandler SVC_Handler
- 处理重复定义
注释掉 stm32f1xx_it.c
文件中的 SysTick_Handler
函数,与FreeRTOS宏定义产生冲突