欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > STM32-FreeRTOS的详细配置

STM32-FreeRTOS的详细配置

2025/4/19 6:06:15 来源:https://blog.csdn.net/D102428/article/details/147277247  浏览:    关键词:STM32-FreeRTOS的详细配置

配置FreeRTOS

原文链接:https://ydamooc.github.io/posts/c9defcd/

1.1 下载FreeRTOS

  1. 打开FreeRTOS官网:https://www.freertos.org/

    请添加图片描述

  2. 点击下载,并且选择"FreeRTOS 202212.01"版本,再点击Download按钮下载官方的资源包。

    请添加图片描述

  3. 下载好资源包后,解压到任意目录,例如我解压到了“G:\FreeRTOS”目录下,由于资源包里面包含的文件较多,解压相对会慢一点,大家需要耐心等待。

    请添加图片描述
    请添加图片描述

  4. 解压完成后,我们打开FreeRTOS文件夹中的FreeRTOSv202212.01文件夹,打开后可以看到里面有很多文件和文件夹,其中我们要使用的是FreeRTOS文件夹中的东西。

请添加图片描述

1.2 配置相关的文件

  1. 随后打开FreeRTOS文件夹,我们在这里面需要关注的是Source文件夹中的内容,以及Demo文件夹中的内容(后续会使用到其中的文件)。我们打开Source文件夹,在当前目录下,我们需要保留这一部分的文件,其他用不到可以删除掉。

    请添加图片描述
    请添加图片描述

  2. 接着再打开portable文件夹,在当前目录下,我们需要保留这一部分的文件,其他用不到可以删除掉。其中MemMang文件夹中存放的是内存管理的相关文件,RVDS文件夹中存放的各个内核相关的文件,我们这里使用的是STM32F103C8T6单片机,所以我们需要的是ARM_CM3文件夹中的内容,其他用不到可以删除掉。

请添加图片描述
在这里插入图片描述

在这里插入图片描述

  1. 因为我们使用的是STM32F103C8T6单片机,在Source文件夹中还缺少FreeRTOS相关的配置文件,我们回到"FreeRTOSv202212.01\FreeRTOS"目录下,然后打开Demo文件夹,在里面找到CORTEX_STM32F103_Keil项目打开,将里面的FreeRTOSConfig.h文件复制到前面的Source文件夹中。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  1. 接下来我们需要打开一个空白的STM32工程文件,本文使用的空白工程文件来自于立创开发板的地阔星STM32F103C8T6资料中的空白工程模板,大家可以自行点击下载地阔星资料。当然使用别的空白工程模板也是可以的,只要能正常编译即可。

    在这里插入图片描述

  2. 下载解压后,打开第03章【立创·STM32F103C8T6开发板】软件资料中的空白工程模板文件夹,然后将里面的STM32F103C8T6_ProjectTemplate.zip解压到任意目录下,解压完成后,将名字修改成FreeRTOS_ProjectTemplate,方便后续操作。

    在这里插入图片描述

  3. 接着在FreeRTOS_ProjectTemplate中创建一个名为FreeRTOS的文件夹,然后回到"FreeRTOSv202212.01\FreeRTOS\Source"目录下,将前面我们保留的Source文件夹中的内容复制到FreeRTOS_ProjectTemplate中的FreeRTOS文件夹中。

    在这里插入图片描述

    在这里插入图片描述

1.3 配置Keil中的STM32代码

  1. FreeRTOS_ProjectTemplate中,根据下面路径,打开项目。打开后,我们先编译一次项目。

    在这里插入图片描述

    在这里插入图片描述

  2. 接着我们为项目创建文件夹,分别为FreeRTOS_COREFreeRTOS_PORT,然后根据下图,将相关的文件添加进这两个文件夹中。

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

  3. 添加完文件之后,打开魔术棒,然后点击C/C++选项卡,将FreeRTOS文件夹中的.h路径添加进去。

    在这里插入图片描述

  4. 由于需要对stm32f10x_it.c文件进行修改,而在项目中是没有添加进去的,我们需要手动添加一下,该文件所在路径是FreeRTOS_ProjectTemplate\module,所以我们在左侧右键MODULE文件夹,然后选择Add Files to Group ‘MODULE’,然后选择stm32f10x_it.c文件添加进去。添加完之后需要编译一下,确保没有问题。

    在这里插入图片描述

    在这里插入图片描述

  5. 接着在左侧打开FreeRTOS_CORE文件夹,打开FreeRTOSConfig.h文件,在第49行处,将原来的171024修改成101024。

    在这里插入图片描述

  6. FreeRTOSConfig.h文件中的最一行前添加上必要的中断声明。

    #define xPortPendSVHandler  PendSV_Handler 
    #define vPortSVCHandler SVC_Handler
    #define xPortSysTickHandler SysTick_Handler
    

    在这里插入图片描述

  7. stm32f10x_it.c文件中,找到SVC_Handler函数、PendSV_Handler函数和SysTick_Handler函数,将原来的代码注释掉,并且在main.c中添加上头文件,然后编译。

    请添加图片描述

    请添加图片描述

1.4 对配置好的工程进行测试

  1. main.c文件开头创建一个任务句柄,并且创建一个任务函数,任务函数的形参必须为void*类型。创建完成后在函数里面写上以下代码。

    请添加图片描述

    void myTask(void* pv)
    {GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOC, &GPIO_InitStructure);GPIO_ResetBits(GPIOC,GPIO_Pin_13);while(1){GPIO_SetBits(GPIOC, GPIO_Pin_13);vTaskDelay(1000);GPIO_ResetBits(GPIOC, GPIO_Pin_13);vTaskDelay(1000);}
    }
    
  2. main函数中,创建任务,并且启动调度器,代码修改如下。

    int main(void)
    {board_init();xTaskCreate(myTask, "myTask", 1024, NULL, 2, &myTaskHandler);vTaskStartScheduler();while(1){}
    }
    
  3. 编译通过后,将程序下载到开发板中,可以看到LED灯每隔1秒闪烁一次,至此说明FreeRTOS相关的配置已经配置完成。

请添加图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词