CubeMx和MDK5手动移植FreeRTOS详细教程

发布时间:2026/10/7 9:49:36
CubeMx和MDK5手动移植FreeRTOS详细教程 1.使用CubeMX生成初始化工程。1配置System Core选项中SYS-Debug为Serial WireTimebase Source 为TIM4。2配置System Core选项中RCC-HSE为Crystal/Ceramic Resonator3配置GPIO用于验证程序。4配置Clock Configration选项HCLK配置为72MHZ。5在Project Manager中Project Name不允许有中文和空格Toolchain/IDE 选择MDK-ARMMin Version 选择V5。在Code Generator中勾选Copy only the necesssary files和Generate peripheral initialization as a pair of ‘.c/.h’ files per peripheral。6点击GENERATE CODE生成基础HAL库工程。2.移植必要文件到根目录下。1在工程根目录下新建一个文件夹叫FreeRTOS然后在FreeRTOS文件夹中再新建三个文件夹分别叫core、inc、port文件夹。2将官方FreeRTOS源文件解压打开将官方FreeRTOS文件夹中的croutine.c、event_group.c、list.c、queue.c、stream_buffer.c、tasks.c、timers.c总共7个文件复制粘贴到新建的core文件夹中。3将官方FreeRTOS文件夹下include文件夹中的所有文件复制粘贴到新建的inc文件夹中。4将官方FreeRTOS/portable/RVDS/ARM_CM3文件夹下的port.c和portmacro.h文件复制到新建的port文件夹中。5将官方FreeRTOS/portable/MemMang文件中heap_4.c文件复制到新建的core文件夹中。6将将官方FreeRTOS/examples/template_configration文件夹下的FreeRTOSConfig.h文件复制到工程根目录下Core/Inc文件夹中。3.打开MDK5软件1点击Manage Project Items中新建两个Groups分别叫FreeRTOS/core和FreeRTOS/port在FreeRTOS/core组中添加core文件夹中所有的.c文件在FreeRTOS/port组中添加port文件夹中port.c文件。2在Options for Target选项卡中的C/C中的Include Paths中添加新建文件inc和新建文件port的路径。3在左边Application/User/Core文件中添加FreeRTOSConfig.h文件。4.修改配置文件1#define configCPU_CLOCK_HZ ( ( unsigned long ) 72000000 )配置为72MHZ。2#define configUSE_TIME_SLICING 1 配置为1。3#define configTICK_TYPE_WIDTH_IN_BITS TICK_TYPE_WIDTH_32_BITS 配置为32位。4 #define configKERNEL_INTERRUPT_PRIORITY (154) 配置为1545#define configMAX_SYSCALL_INTERRUPT_PRIORITY (54) 配置为546#define configCHECK_FOR_STACK_OVERFLOW 0 配置为07在FreeRTOSConfig.h文件最后添加三个宏定义#define vPortSVCHandler SVC_Handler#define xPortPendSVHandler PendSV_Handler#define xPortSysTickHandler SysTick_Handler8注释或者删除Application/User/Core文件下stm32f1xx_it.c文件中的三个函数。void SysTick_Handler(void)void PendSV_Handler(void)void SVC_Handler(void)最后编辑查看是否有报错显示严格按照我的文档操作不可能有报错显示。